目的:
使用pandas进行自行车行驶数据分析,并使用matplotlib库进行绘图展示,数据来源可在pandas官网下载,该数据记录的是蒙特利尔市七条自行车道行车人数
步骤:
1先打开数据文件观察数据结构,以及类型
2准备环境
3读取文件
4选择需要的数据进行分析绘图
具体实现
通过直接打开数据的方式可以看到,我们的数据分隔符为";"且编码格式不适合UTF-8,应使用latin1编码格式,且日期格式不符合pandas的时间日期格式,需要我们重新定。
准备环境
import pandas as pd
import matplotlib.pyplot as plt
#pd.set_option('display.style', 'default')
plt.rcParams['figure.figsize'] = (15,5)
读取文件
broken_df=pd.read_csv('bikes.csv',encoding='latin1')
#print(broken_df[:3])
fix_df=pd.read_csv('bikes.csv',encoding='latin1',sep=';',parse_dates=['Date'],
dayfirst=True,index_col='Date')
#print(fix_df[:3])
使用encoding属性定义编码格式,sep定义分隔符,parse_dates将选定的某一列解析为时间索引,dayfirst说明原数据的首个元素是天,index_col设置Date列为索引。
数据分析
#print(fix_df['Berri 1'])
fix_df['Berri 1'].plot()
plt.show()
berri_bike=fix_df['Berri 1'].copy()
假设我们希望了解周末和工作日,那个骑自行车的人比较多,这时我们需要在DataFrame里加一列“工作日”用来区分工作日和周末,我们只考虑’Berri 1‘街道的数据。我们需要添加一个名为“工作日”的列,我们先利用时间索引,得到那些天是工作日那些天是周末。
fix_df.loc[:,'weekday']=fix_df.index.weekday
print(fix_df[:5])
#berry_bike_weekday=fix_df['weekday'].copy()
weekday_counts=fix_df.groupby('weekday').aggregate(sum)
#print(weekday_counts)
weekday_counts.index=['Monday','Tuesday','wednesday','thursday','Friday','Saturday','Sunday']
print(weekday_counts)
weekday_counts.plot(kind='bar')
plt.show()