案例說明
pandas環(huán)境
完整示例
第一步 打開excel文件
第二步 合并sheet
第三步 統(tǒng)計(jì)各類型商品銷售額,生成excel文件
第四步 合并兩列單元格
總結(jié)
Pandas是python一款用于數(shù)據(jù)分析處理的優(yōu)秀工具,掌握簡單的使用方法,可以減少我們很多的工作時(shí)間,本篇主要介紹pandas對(duì)excel的讀寫,以及簡單的合并統(tǒng)計(jì),下一章會(huì)為大家介紹Pandas的簡單繪圖。
需求:
將兩個(gè)sheet文件合并為一個(gè),生成新excel文件
統(tǒng)計(jì)兩天各類型商品的銷售額,生成新excel文件
將相同名稱但不同價(jià)格的商品匯總(合并單元格),生成新excel文件
數(shù)據(jù)文件:
這里默認(rèn)你已經(jīng)安裝好了pandas環(huán)境,也就是import pandas as pd 沒有報(bào)錯(cuò)
如果你沒有pandas環(huán)境,網(wǎng)上有很多優(yōu)秀教程,其實(shí)很簡單,只需要python環(huán)境下的pip install pandas就行了
第一步是最簡單的一步,但也是用的最多的一步,大家主要記住幾個(gè)常用的參數(shù)。
import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel('E:/data/myfile/商品銷售信息表.xlsx',encoding='windows-1252', sheetname=None, header=1, skip_footer=1 )
參數(shù)1:文件路徑
參數(shù)2: sheetname,默認(rèn)為0,表示sheet的下標(biāo)索引,設(shè)置為None表示打開所有 Sheet,若要打開指定的sheet,
可傳入下標(biāo)數(shù)組, 如sheetname=[0,1,6,8]
參數(shù)3:header,標(biāo)題所在的行數(shù),若不設(shè)置,默認(rèn)第一行為標(biāo)題(header=0),本例中標(biāo)題在第二行,所以header=1
參數(shù)4:skip_footer,底部跳過多少行,本例中底部有一行多余數(shù)據(jù),故skip_footer=1
data返回的是一個(gè)dataframe集合,類似Dictionary
可以這樣輸出:data['商品銷售信息表0714’] 或 data['商品銷售信息表0715’]
合并sheet要用到concat函數(shù),根據(jù)表頭進(jìn)行合并,代碼如下:
import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel('E:/data/myfile/商品銷售信息表.xlsx',encoding='windows-1252', sheetname=None, header=1, skip_footer=1 ) df_all = pd.concat([data['商品銷售信息表0714'],data['商品銷售信息表0715']],axis=0)
concat 的兩個(gè)參數(shù):
第一個(gè)參數(shù) 是要合并的dataframe對(duì)象數(shù)組,也就是sheet集合
第二個(gè)參數(shù) 可以省略,代表合并的方向,默認(rèn)是0,表示縱向合并;
合并的對(duì)象
其實(shí)從統(tǒng)計(jì)學(xué)的角度來說,這一步之前應(yīng)該是數(shù)據(jù)清洗,處理掉空值和異常值,這里暫時(shí)不做說明。
Pandas對(duì)數(shù)據(jù)的統(tǒng)計(jì)處理,主要使用 groupby 函數(shù),熟悉sql的朋友應(yīng)該不會(huì)陌生,也就是分組統(tǒng)計(jì)。
import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel('E:/data/myfile/商品銷售信息表.xlsx',encoding='windows-1252', sheetname=None, header=1, skip_footer=1 ) df_all = pd.concat([data['商品銷售信息表0714'],data['商品銷售信息表0715']],axis=0) df_type = df_all.groupby(['商品名','價(jià)格']).sum() df_result = df_type.reset_index()
df_result.to_excel('E:/dat/myfile/分類統(tǒng)計(jì)各類型商品銷售額.xlsx')
合并兩列單元格的思路,是生成一列新的單元格
import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel('E:/data/myfile/商品銷售信息表.xlsx',encoding='windows-1252', sheetname=None, header=1, skip_footer=1 ) df_all = pd.concat([data['商品銷售信息表0714'],data['商品銷售信息表0715']],axis=0) df_all['商品-價(jià)格'] = df_all['商品名'] + '-' + df_all['價(jià)格'].map(str)
輸出df_all:
df_result = df_type[{'商品-價(jià)格','數(shù)量','總價(jià)'}] df_result.to_excel('E:/data/myfile/合并_商品銷售信息表.xlsx')
示例相對(duì)比較簡單,在實(shí)際運(yùn)用中可能遇到的問題會(huì)比較復(fù)雜,希望大家可以一起交流學(xué)習(xí),這是一個(gè)知識(shí)大爆炸的年代,大到終身學(xué)習(xí)也未必學(xué)得完,只有不斷的交流合作,才能保持自己的進(jìn)步。
聯(lián)系客服