嘗試本節(jié)代碼之前,必須成功安裝pandas。
常見的數(shù)據(jù)來源,有TXT格式(例:空格分隔)、Excel格式、數(shù)據(jù)庫表格(例:mysql數(shù)據(jù)庫表格)、以及數(shù)組(list)和字典(dict)格式數(shù)據(jù)。
0 數(shù)據(jù)格式
嘗試時(shí),請(qǐng)先將下表另存為相應(yīng)的數(shù)據(jù)格式。
| 倉庫 | 倉庫ID | SKU | 狀態(tài) | 批次 | 效期 | 批號(hào) | 發(fā)貨數(shù) | 收貨數(shù) |
|---|---|---|---|---|---|---|---|---|
| 備貨倉 | 7 | 102001 | 1 | YQ1HMC | 2019-08-16 | 20190816 | 11 | 11 |
| 華東倉(原零售倉) | 5 | 102001 | 1 | YQ1HMC | 2019-08-16 | 20190816 | 5 | 5 |
| 備貨倉 | 7 | 102001 | 3 | YQ1HMC | 2019-08-16 | 20190816 | 1 | 1 |
| 華東倉(原零售倉) | 5 | 102002 | 1 | YQ1HMB | 2019-08-15 | 20190815 | 6 | 6 |
| 華東倉(原零售倉) | 5 | 102005 | 1 | YQ1HMB | 2019-08-16 | 20190816 | 10 | 10 |
| 備貨倉 | 7 | 102101 | 3 | CSQA002 | 2018-01-30 | 20180130 | 1 | 1 |
| 華東倉(原零售倉) | 5 | 102104 | 1 | CSRF001 | 2019-07-05 | 20190705 | 6 | 6 |
| 備貨倉 | 7 | 102104 | 3 | dfhg | 2019-07-05 | 20190705 | 1 | 1 |
| 華東倉(原零售倉) | 5 | 102105 | 1 | CSRE001 | 2019-05-24 | 20190524 | 2 | 2 |
| 備貨倉 | 7 | 102105 | 3 | 0411A | 2019-05-24 | 20190524 | 1 | 1 |
| 華東倉(原零售倉) | 5 | 102111 | 1 | CSRF001 | 2019-07-05 | 20190705 | 2 | 2 |
| 華東倉(原零售倉) | 5 | 102111 | 1 | fh22 | 2019-07-05 | 20190705 | 1 | 1 |
| 備貨倉 | 7 | 102111 | 3 | dg0h52 | 2019-05-02 | 20190502 | 1 | 1 |
| 備貨倉 | 7 | 102113 | 3 | CSRF002 | 2019-07-05 | 20190705 | 1 | 1 |
| 華東倉(原零售倉) | 5 | 102114 | 1 | A | 2019-06-18 | 20190618 | 1 | 1 |
| 備貨倉 | 7 | 102114 | 3 | fh02 | 2019-06-18 | 20190618 | 1 | 1 |
| 華東倉(原零售倉) | 5 | 102115 | 1 | 2019-07-04 | 20190704 | 1 | 1 | |
| 備貨倉 | 7 | 102116 | 1 | YQ2FMA | 2019-06-06 | 20190606 | 6 | 6 |
| 華東倉(原零售倉) | 5 | 102116 | 1 | YQ2FMA | 2019-06-06 | 20190606 | 7 | 7 |
1 TXT格式數(shù)據(jù)的讀?。ù颂幨褂每崭駷榉指舴?/h1>
此處需留意TXT文件的編碼格式。如不是UTF-8格式,而是GBK格式,須在open函數(shù)中做相應(yīng)調(diào)整。
import pandas as pd
with open('G:/test/2.pandas數(shù)據(jù)讀取 TXT格式.txt', 'r', encoding='UTF-8') as f:
table = pd.read_table(f, sep=' ', index_col=0, header=None, names=['倉庫','倉庫編號(hào)','SKU','狀態(tài)','批次','有效日期','批號(hào)','發(fā)貨數(shù)量','收貨數(shù)量'],lineterminator='\n')

TXT格式
2 Excel格式數(shù)據(jù)的讀取和寫入
下述是常用方法,其中names參數(shù)用于重命名。但pandas讀取Excel數(shù)據(jù)的方法,貌似不可以根據(jù)Excel的名稱管理器讀取數(shù)據(jù),而是讀取某sheet的全部數(shù)據(jù)。
import pandas as pd
table = pd.read_excel('G:/test/2.pandas數(shù)據(jù)讀取 Excel格式.xlsx', sheetname='Sheet1', names=['倉庫','倉庫編號(hào)','SKU','狀態(tài)','批次','有效日期','批號(hào)','發(fā)貨數(shù)量','收貨數(shù)量'])
writer = pd.ExcelWriter("test.xlsx")
for sheet in ['sheet1']:
table.to_excel(writer, sheet_name=sheet)
writer.save()

Excel格式
3 數(shù)據(jù)庫表格數(shù)據(jù)的讀取
此處使用mysql做演示
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine("mysql+mysqldb://username:password@server_ip:server_port/database_name?charset=utf8")
table = pd.read_sql_query(con=engine,sql="SELECT `倉庫`,`倉庫編號(hào)`,`SKU`,`狀態(tài)`,`批次`,`有效日期`,`批號(hào)`,`發(fā)貨數(shù)量`,`收貨數(shù)量` FROM demo_inv")
4 數(shù)組(list)和字典(dict)格式數(shù)據(jù)的讀取
數(shù)組可輕松轉(zhuǎn)成DateFrame格式,但json格式的數(shù)據(jù),由于其結(jié)構(gòu)復(fù)雜度,不是很容易轉(zhuǎn)化。比較合適的方式,是先將字典轉(zhuǎn)成數(shù)組,然后再轉(zhuǎn)成DateFrame格式,此處不做展示
import pandas as pd
table = pd.DataFrame([["備貨倉","7","102001","1","YQ1HMC","2019-08-16","20190816","11","11"],["華東倉(原零售倉)","5","102001","1","YQ1HMC","2019-08-16","20190816","5","5"]],columns=['倉庫','倉庫編號(hào)','SKU','狀態(tài)','批次','有效日期','批號(hào)','發(fā)貨數(shù)量','收貨數(shù)量'])