from pandas import Series,DataFrame
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt #導(dǎo)入matplotlib庫
get_ipython().run_line_magic('matplotlib', 'inline')
df=pd.read_csv(r'D:\python數(shù)據(jù)分析\usagelog.csv')
df_usetimes=df.loc[:,['date','userid','times']] #提取日期、用戶ID和次數(shù)3列,所有行
df_usetimes2018=df_usetimes[(df_usetimes['date']>=20180101) & (df_usetimes['date']<=20181231) ].sort_values(by='date') #提取2018年的數(shù)據(jù)
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']) #按照星期、日期先后排序
#透視表,各個(gè)用戶在2018年一周7天里每天批注量的分類匯總
df_pivot_table=df.pivot_table(index='userid',columns='day',values='times',aggfunc='sum',margins=True,fill_value=0,margins_name='合計(jì)')
df_pivot_table
#交叉表,反映各個(gè)用戶在2018年一周7天內(nèi)做批量郵編批注的頻率。
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('次數(shù)')
plt.bar(df_2018_sum.index,df_2018_sum['times'],color='red')
#累計(jì)批注量折線圖
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