数据来源:数据来源:和鲸社区-Numpy+Pandas数据处理·第五关–wind.csv
主要内容:

  • 数据读取时的参数设置-parse_dates
  • 数据类型查看
  • 自定义函数修复数据
  • 将日期设置为索引
  • 统计每列的缺失值和非缺失值
  • 创建数据框,计算最大值,最小值,均值,标准差
  • 以年为频率进行重采样
导入数据
import pandas as pd
import datetime
filepath6 = "/home/mw/input/Pandas_exercise2020/wind.csv"
wind = pd.read_csv(filepath6, sep='\s+')
wind.head()

python旅游数据分析 python数据分析综合案例_python旅游数据分析

添加参数 parse_dates

filepath6 = "/home/mw/input/Pandas_exercise2020/wind.csv"
wind = pd.read_csv(filepath6, sep='\s+', parse_dates=[[0,1,2]])
# parse_dates 表示将某一列设置为 时间类型
wind.head()

python旅游数据分析 python数据分析综合案例_数据_02

查看数据类型
wind.info()
自定函数
#  2061年?我们真的有这一年的数据?创建一个函数并用它去修复这个bug
def change_year(x):
    year = x.year - 100 if x.year > 1999 else x.year
    return datetime.date(year, x.month, x.day)

wind['Yr_Mo_Dy'] = wind['Yr_Mo_Dy'].apply(change_year).astype('datetime64[ns]')
# 转换日期类型方法:
# 法一:astype('datetime64[ns]')
# 法二:pd.to_datetime(Series)
wind.head()

python旅游数据分析 python数据分析综合案例_数据_03

将日期设置为索引
# 将日期设为索引,注意数据类型,应该是datetime64[ns]
wind.set_index('Yr_Mo_Dy', inplace=True)
wind.head()

python旅游数据分析 python数据分析综合案例_python旅游数据分析_04

##### 计算缺失值和非缺失值的数量

#  对应每一个location,一共有多少数据值缺失
wind.isnull().sum()
# 对应每一个location,一共有多少完整的数据值
wind.notnull().sum()
创建数据框,计算局均值,最值,标准差
# 创建一个名为loc_stats的数据框去计算并存储每个location的风速最小值,最大值,平均值和标准差
import numpy as np
loc_stats = wind.agg(['min', 'max', 'mean', 'std']).round(2) #或者用np.min,np.max,np.mean,np.std
loc_stats

python旅游数据分析 python数据分析综合案例_python旅游数据分析_05

# 创建一个名为day_stats的数据框去计算并存储所有location的风速最小值,最大值,平均值和标准差
day_stats = wind.agg([np.min, np.max, np.mean, np.std], axis=1)
day_stats.head()

python旅游数据分析 python数据分析综合案例_python旅游数据分析_06

# 对于每一个location,计算一月份的平均风速
# 注意,1961年的1月和1962年的1月应该区别对待 
wind['date'] = wind.index

wind['year'] = wind['date'].apply(lambda x: x.year)
wind['month'] = wind['date'].apply(lambda x: x.month)
wind['day'] = wind['date'].apply(lambda x: x.day)

january_winds = wind.query('month==1')  #query等同于wind[wind.month==1]    
january_winds.mean()

python旅游数据分析 python数据分析综合案例_python旅游数据分析_07

对数据以年为频率进行重采样-query
wind.query('month == 1 and day == 1').head()

python旅游数据分析 python数据分析综合案例_数据_08

#     df.query(expr,inplace = False,** kwargs )# 使用布尔表达式查询帧的列
#     参数:
#         expr:str要评估的查询字符串。你可以在环境中引用变量,在它们前面添加一个'@'字符 。@a + b
#         inplace=False:是否修改数据或返回副本
#         kwargs:dict关键字参数
#         默认修改Python语法'&'/'and'和'|'/'or'位运算符优先级高于布尔表达式,不同于Python
#         关键字参数parser='python'执行Python评估。
#         engine='python' 用Python本身作为后端来传递评估表达式。不建议效率低。
#         默认实例df.index和 df.columns属性 DataFrame放在查询命名空间中,
#         这允许您将框架的索引和列视为框架中的列。标识符index用于帧索引;
#         您还可以使用索引的名称在查询中标识它。