1. 程式人生 > >Pandas+Matplotlib之csv檔案的建立、讀取與視覺化

Pandas+Matplotlib之csv檔案的建立、讀取與視覺化

Pandas+Matplotlib之csv檔案的建立、讀取與視覺化

#在當前資料夾中生成飯店營業額模擬資料檔案data.csv
import csv
import random
import datetime
fn='E:/Spyder/data.csv'
with open(fn,'w')as fp:
    wr=csv.writer(fp)  #一行一行寫入csv檔案
    wr.writerow(['日期','銷量'])  #寫入表頭
    startDate=datetime.date(2017,1,1) #生成模擬時間
    for i in range(365):
#生成365個模擬資料,寫入csv amount=300+5*i+random.randrange(100) wr.writerow([str(startDate),amount]) startDate=startDate+datetime.timedelta(days=1)#下一天 #使用pandas讀取資料檔案,建立DataFrame物件,並刪除其中所有缺失值; #使用matplotlib生成每天營業額折線圖,儲存圖形為first.jpg #使用matplotlib繪製每個月營業額柱狀圖,儲存為second.jpg #找出相鄰兩個月最大漲幅,並寫入maxMonth.
txt #使用matplotlib顯示20184個季度的營業額分佈餅狀圖,儲存為third.jpg import pandas as pd import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams['font.sans-serif']=['SimHei'] #pyplot中文顯示 df=pd.read_csv('data.csv',encoding='cp936') df=df.dropna()#讀取資料,丟棄缺失值 #生成天營業額折線圖 plt.figure() df.plot(x='日期') plt.
savefig('E:/Spyder/first.jpg') #生成月營業額柱狀圖 plt.figure() df1=df[:] #str1.rindex(str2)返回子串 str2 在串str1中最後出現位置,如果沒有匹配的字串會報異常 df1['month']=df1['日期'].map(lambda x:x[:x.rindex('-')])#提取出月份,新建了一個month列出來?? df1=df1.groupby(by='month',as_index=False).sum() #as_inside=False不把month作為新的index df1.plot(x='month',kind='bar') plt.savefig('E:/Spyder/second.jpg') #查詢漲幅最大月份,寫入檔案 plt.figure() df2=df1.drop('month',axis=1).diff()#在銷量列中每月跟上月相減的差集 m=df2['銷量'].nlargest(1).keys()[0]#查詢銷量列中差集最大的一個數所對應的索引 with open('E:/Spyder/maxMonth.txt','w')as fp: fp.write(df1.loc[m,'month'])#索引m對應的month #生成季度營業額餅狀圖 plt.figure() one=df1[:3]['銷量'].sum() two=df1[3:6]['銷量'].sum() three=df1[6:9]['銷量'].sum() four=df1[9:12]['銷量'].sum() plt.pie([one,two,three,four],labels=['one','two','three','four']) plt.savefig('E:/Spyder/third.fig')

程式執行結果