from pandas import Series,DataFrame
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt #导入matplotlib库
get_ipython().run_line_magic('matplotlib', 'inline')
df=pd.read_csv(r'D:\python数据分析\usagelog.csv')
df_usetimes=df.loc[:,['date','userid','times']] #提取日期、用户ID和次数3列,所有行
df_usetimes2018=df_usetimes[(df_usetimes['date']>=20180101) & (df_usetimes['date']<=20181231) ].sort_values(by='date') #提取2018年的数据
def getmonth(d):
return(int(d/100)%100 )
df_usetimes2018['date']=df_usetimes2018['date'].map(getmonth)
def weekdayname_to_weekdaynumbe(dayname):
if dayname == '星期一':
return('1')
elif dayname == '星期二':
return('2')
elif dayname == '星期三':
return('3')
elif dayname == '星期四':
return('4')
elif dayname == '星期五':
return('5')
elif dayname == '星期六':
return('6')
elif dayname == '星期日':
return('7')
else:
return('')
df['day']=df['day'].map(weekdayname_to_weekdaynumbe)
df.sort_values(by=['day','date']) #按照星期、日期先后排序
#透视表,各个用户在2018年一周7天里每天批注量的分类汇总
df_pivot_table=df.pivot_table(index='userid',columns='day',values='times',aggfunc='sum',margins=True,fill_value=0,margins_name='合计')
df_pivot_table
#交叉表,反映各个用户在2018年一周7天内做批量邮编批注的频率。
df_cross=pd.crosstab(index=df['userid'],columns=df['day'])
#用matplotlib画2018年每月批注量对比图
df_2018_sum=df_usetimes2018.groupby(by='date').sum()
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.title('2018年每月批注量对比图')
plt.xlabel('月份')
plt.ylabel('次数')
plt.bar(df_2018_sum.index,df_2018_sum['times'],color='red')
#累计批注量折线图
plt.plot(df_2018_sum.cumsum().index,df_2018_sum.cumsum()['times'],color='red',linestyle=':',marker='x')
image.png
image.png
image.png
image.png
网友评论