Pandas数据分析练习6

练习6-统计

探索风速数据


步骤1 导入必要的库

运行以下代码

import pandas as pd

import datetime

步骤2 从以下地址导入数据

运行以下代码

# 本地对应的"wind.data"路径

path6 = "D:/hailong/hailong_download/pandas_exercise/exercise_data/wind.data"

步骤3 将数据作存储并且设置前三列为合适的索引

运行以下代码

data = pd.read_csv(path6,sep="\s+",parse_dates=[[0,1,2]])    #read_table已弃用

data.head()

输出结果

步骤4 2061年?我们真的有这一年的数据?创建一个函数并用它去修复这个bug

运行以下代码

def fix_century(x):

    year = x.year - 100 if x.year > 1989 else x.year

    return datetime.date(year,x.month,x.day)

# apply the function fix_century on the column and replace the values to the right ones

data['Yr_Mo_Dy'] = data['Yr_Mo_Dy'].apply(fix_century)

# data.info()

data.head()

输出结果

步骤5 将日期设为索引,注意数据类型,应该是datetime64[ns]

运行以下代码

# transform Yr_Mo_Dy it to date type datetime64

data["Yr_Mo_Dy"] = pd.to_datetime(data["Yr_Mo_Dy"])

# set 'Yr_Mo_Dy' as the index

data = data.set_index('Yr_Mo_Dy')

# data.info()

data.head()

输出结果

步骤6 对应每一个location,一共有多少数据值缺失

运行以下代码

data.isnull().sum()

输出结果

步骤7 对应每一个location,一共有多少完整的数据值

运行以下代码

data.shape[0] - data.isnull().sum()

输出结果

步骤8 对于全体数据,计算风速的平均值

运行以下代码

data.mean().mean()

输出结果:10.227982360836924

步骤9 创建一个名为loc_stats的数据框去计算并存储每个location的风速最小值,最大值,平均值和标准差

运行以下代码

loc_stats = pd.DataFrame()

loc_stats['min'] = data.min() #min

loc_stats['max'] = data.max() #max

loc_stats['mean'] = data.mean() #mean

loc_stats['std'] = data.std() #standard deviations

loc_stats

输出结果

步骤10 创建一个名为day_stats的数据框去计算并存储所有location的风速最小值,最大值,平均值和标准差

运行以下代码

day_stats = pd.DataFrame()

day_stats['min'] = data.min(axis=1) #min

day_stats['max'] = data.max(axis=1) #max

day_stats['mean'] = data.mean(axis=1) #mean

day_stats['std'] = data.std(axis=1) #standard deviations

day_stats.head()

输出结果

步骤11 对于每一个location,计算一月份的平均风速

运行以下代码

# creates a new column 'date' and gets the values from the index

data['date'] = data.index

# creates a column for each value from date

data['month'] = data['date'].apply(lambda date: date.month)

data['year'] = data['date'].apply(lambda date: date.year)

data['day'] = data['date'].apply(lambda date: date.day)

# gets all value from the month 1 and assign to janyary_winds

january_winds = data.query('month == 1')

# gets the mean from january_winds, using .loc to not print the mean of month, year and day

january_winds.loc[:,'RPT':"MAL"].mean()

输出结果

步骤12 对于数据记录按照年为频率取样

运行以下代码

data.query('month == 1 and day == 1')

输出结果

步骤13 对于数据记录按照月为频率取样

运行以下代码

data.query('day == 1')

输出结果

代码截图

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容