利用pandas輕松處理txt文件數(shù)據(jù)
在數(shù)據(jù)分析和處理中,常遇到從txt文件讀入的數(shù)據(jù)需要進(jìn)行處理的情況。比如數(shù)據(jù)格式混亂,需要清洗;某些列無效,需要刪除;某些列需要轉(zhuǎn)換類型等。這些工作可能帶來很大的工作量和時間花費(fèi),但是我們可以通過pandas這個Python庫來輕松地完成這些操作。
本文將結(jié)合代碼示例,教你如何使用pandas處理txt文件數(shù)據(jù)。
- 引入pandas庫
在使用pandas庫前,我們需要先引入它。在Python腳本中,一般約定將pandas庫重命名為pd,方便后續(xù)調(diào)用。
import pandas as pd
登錄后復(fù)制
- 讀取txt文件
首先,我們需要讀取txt文件中的數(shù)據(jù)。在pandas中,我們使用pd.read_csv()函數(shù)來讀入數(shù)據(jù)。雖然函數(shù)名中包含了csv,但是該函數(shù)同樣適用于讀入txt文件。
data = pd.read_csv('data.txt', sep=' ', header=None)
登錄后復(fù)制
該函數(shù)參數(shù)解釋如下:
‘data.txt’: 表示我們需要讀取的txt文件的路徑和文件名。sep: 表示數(shù)據(jù)分隔符,此處使用’ ‘表示數(shù)據(jù)之間由tab隔開,也可以換成其他符號。header: 表示文件中是否包含列名,若不包含則設(shè)置為None。
讀入數(shù)據(jù)后,我們可以通過打印輸出data來查看數(shù)據(jù)的內(nèi)容和形式。
print(data)
登錄后復(fù)制
輸出結(jié)果:
0 1 2 0 A 123 1.0 1 B 321 2.0 2 C 231 NaN 3 D 213 4.0 4 E 132 3.0
登錄后復(fù)制
可以看出,讀入的數(shù)據(jù)已經(jīng)以DataFrame的形式存儲在了data中。
- 清洗數(shù)據(jù)
讀入的數(shù)據(jù)可能存在很多格式不規(guī)范或錯誤的地方,需要我們進(jìn)行數(shù)據(jù)清洗。比如,有些行或列中可能存在缺失值,我們需要將其填充或刪除;有些列的數(shù)據(jù)類型可能不符合我們的需求,我們需要將其轉(zhuǎn)換為數(shù)值或字符串類型等。
a. 刪除含有缺失值的行
我們可以使用dropna()函數(shù)來刪除含有缺失值的行。
data_clean = data.dropna()
登錄后復(fù)制
該函數(shù)會刪除數(shù)據(jù)中任意含有缺失值的行,返回只有完整數(shù)據(jù)的DataFrame。
b. 填充缺失值
如果不能刪除含有缺失值的行,我們可以選擇填充這些缺失值。使用fillna()函數(shù)即可。
data_fill = data.fillna(0)
登錄后復(fù)制
該函數(shù)將缺失值填充為0,如果想以其他值進(jìn)行填充,可以在括號內(nèi)傳入相應(yīng)的值。
c. 轉(zhuǎn)換數(shù)據(jù)類型
在數(shù)據(jù)分析中,需要將某些數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值型或字符型以便后續(xù)計算或處理。在pandas中,可以使用astype()函數(shù)進(jìn)行類型轉(zhuǎn)換。
data_conversion = data_clean.astype({'1': 'int', '2': 'str'})
登錄后復(fù)制
該函數(shù)可以將data_clean中第1列的類型轉(zhuǎn)換為整型(int),第2列的類型轉(zhuǎn)換為字符串型(str)。
- 保存新數(shù)據(jù)
最后,我們需要將經(jīng)過清洗和處理后的數(shù)據(jù)保存到新的txt文件中。在pandas中,我們可以使用to_csv()函數(shù)來實(shí)現(xiàn)。
data_clean.to_csv('data_clean.txt', index=False, header=False, sep=' ')
登錄后復(fù)制
該函數(shù)參數(shù)解釋如下:
‘data_clean.txt’: 表示保存文件的路徑和文件名。index: 表示是否保留行索引,此處選擇False不保留。header: 表示文件中是否包含列名,此處選擇False不包含。sep: 表示分隔符,此處使用’ ‘表示以tab作為分隔符。
代碼示例
下面是完整的代碼示例,你可以將其復(fù)制到Python腳本中并運(yùn)行。
import pandas as pd # 讀入數(shù)據(jù) data = pd.read_csv('data.txt', sep=' ', header=None) print('原始數(shù)據(jù): ', data) # 刪除含有缺失值的行 data_clean = data.dropna() print('處理后數(shù)據(jù)(刪除缺失值): ', data_clean) # 填充缺失值 data_fill = data.fillna(0) print('處理后數(shù)據(jù)(填充缺失值): ', data_fill) # 轉(zhuǎn)換數(shù)據(jù)類型 data_conversion = data_clean.astype({'1': 'int', '2': 'str'}) print('處理后數(shù)據(jù)(類型轉(zhuǎn)換): ', data_conversion) # 保存新數(shù)據(jù) data_clean.to_csv('data_clean.txt', index=False, header=False, sep=' ')
登錄后復(fù)制
本文介紹了如何使用pandas輕松處理txt文件數(shù)據(jù),包括讀取、清洗、轉(zhuǎn)換和保存數(shù)據(jù)。pandas作為Python中重要的數(shù)據(jù)處理工具之一,可以幫助我們更加高效地完成數(shù)據(jù)挖掘和分析任務(wù)。