熱線電話:13121318867

登錄
首頁大數據時代數十萬數據Excel數據不好處理怎么辦?
數十萬數據Excel數據不好處理怎么辦?
2020-07-16
收藏

文章轉載自:微信公眾號 Python的樂趣

作者:一粒米飯

比如像電商行業,每月有上百萬條訂單發貨數據需要與倉庫的數據進行核對計算,涉及到數據計算,篩選,匹配等步驟,用excel表超級卡,并且經??ㄋ?。

這時如果你會Python,十幾行代碼就可以搞定。

這里需要兩個Python庫,一個是os庫,一個是pandas庫。

os庫

os是Python內置庫,不需要額外安裝,只要用import導入就可以用了。os模塊封裝了常見的文件和目錄操作,利用它可以輕松的對系統上的目錄和文件進行各種操作,比如獲取當前目錄、列舉當前文件夾中的所有文件和文件夾、判斷文件或目錄是否存在、刪除文件等,具體見下圖。

pandas

pandas是第三方庫,需要手動安裝才能使用。pandas是專門用來做數據分析的強大類庫,可以方便地從csv、Excel和其他文本文件以及數據庫中讀取數據,然后對數據進行加和、求平均值、求方差、計算最大值最小值等數據分析,支持生成Excel等格式文件或進行可視化操作,函數如下:

其中讀Excel需要依賴xlrd庫,寫Excel依賴openpyxl,pandas、xlrd和openpyxl安裝命令如下:

$ pip install xlrd openpyxl pandas

下面開始進行數據處理...

這里假設數據是按日期命名的Excel文件并且放在excel_data文件夾中,每個Excel文件包含用戶ID、商品ID、商品屬性列表、購買數量這幾列信息。

文件夾中的所有文件如下,在linux下用ls命令列舉excel_data下所有文件:

$ ls excel_data

結果:

20120702.xlsx 20131018.xlsx 20150203.xlsx 20170416.xlsx
20120703.xlsx 20131019.xlsx 20150204.xlsx 20170417.xlsx
20120704.xlsx 20131020.xlsx 20150205.xlsx 20170418.xlsx
20120705.xlsx 20131021.xlsx 20160101.xlsx 20170419.xlsx
...

實現的思路是利用os庫獲取所有的Excel文件,然后用pandas依次讀取所有文件并合并到一起進行數據,計算出每個商品的總量以及銷量前十的商品。

1.列舉所有Excel文件

import os
files = os.listdir("excel_data")

2.用pandas讀取所有數據并合并到一起

import pandas as pd
df_list = [pd.read_excel(os.path.join("excel_data", f)) for f in files]
data = pd.concat(df_list)

3.統計每個商品的數量

sum_of_product = data[["商品ID", "購買數量"]].groupby(["商品ID"]).sum()
sum_of_product

結果

購買數量
商品ID	
1662	1
201826	17
203319	67
203320	494
203322	332
...	...

122680025	21
122680026	8
122690023	16
122692024	48
122696024	5

獲取銷量前十的商品

sum_of_product.sort_values('購買數量', ascending=False).head(10)

結果:

商品ID	      購買數量
50018831	56632
50007016	8291
50011993	6351
50013636	6340
50003700	6325
211122	5823
50010558	5248
50016006	4948
50006602	4692
50002524	4123

完整代碼如下:

import os
import pandas as pd

# 獲取所有Excel文件并讀取數據
files = os.listdir("excel_data")
df_list = [pd.read_excel(os.path.join("excel_data", f)) for f in files]
data = pd.concat(df_list)

# 統計每個商品的數量,并輸出到Excel文件中
sum_of_product = data[["商品ID", "購買數量"]].groupby(["商品ID"]).sum()
sum_of_product.to_excel("各個商品數量統計.xlsx")

# 統計銷量前十的商品
sum_of_product.sort_values('購買數量', ascending=False).head(10)

結果:

商品ID	購買數量
50018831	56632
50007016	8291
50011993	6351
50013636	6340
50003700	6325
211122	5823
50010558	5248
50016006	4948
50006602	4692
50002524	4123

教程就到這里,不足之處歡迎交流指正

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢