python pandas 練習

環境:win10+python3.6

目的:用pandas讀取txt大文件(3百萬行)並按某個字段值分成不同的文件txt

#慣例先引入模塊
import pandas as pd

#導入數據,open和pd的read_csv那個更效率呢?
#文件在代碼文件當前文件夾下,可以不寫路徑
#用gbk編碼讀取文本
#該txt文件沒有標題header=None,如果第一行是標題,這樣設置 header=0
#delimiter = '\t'這是分行號。文件中的分隔符是"|",但沒能正確識別出來。
df = pd.read_csv("freelist.txt",encoding="gbk",header=None,delimiter="\t")
print(df.head())

得到的df是有3百萬行和一列的數據,如下表:

                                             0
0        20170405|20170405|A01店|10|1143163301|深圳市...
1        20170405|20170405|b01店|10|1143163301|深圳市...

然後給df分列:分割符是 |

df1 = df[0].str.split('|',expand=True)

假設是按店名稱分拆txt:

#構建一個列表,臨時裝載要拆分的店面,下面是怎麼把店面都找出來。
q = []
#s是店鋪數據集,有大量重複的數字,準備去重
s = df1[3].values

#數據去重
for a in s:
    if a not in q:
        q.append(a)
#然後呢,根據店面情況拆分txt,並把篩選過後的txt保存到shu/的地方
for b in q:
    df1[df1[5]==b].to_csv("shu/"+b+".txt",index=None)

#大功告成,最後可以做個日誌文件:
import datetime

#取當前時間
t = datetime.datetime.now()
name = "%04d"%(t.year)+"%02d"%(t.month)+"%02d"%(t.day)
log = open('log'+ name +'.txt','a')
log.write('\n'+ t.strftime("%Y-%m-%d %H:%M:%S") + '   :開始日誌')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章