python 文件讀寫和數據清洗
一、文件操作
- pandas內置瞭10多種數據源讀取函數,常見的就是CSV和EXCEL
- 使用read_csv方法讀取,結果為dataframe格式
- 在讀取csv文件時,文件名稱盡量是英文
- 讀取csv時,註意編碼,常用編碼為utf-8、gbk 、gbk2312和gb18030等
- 使用to_csv方法快速保存
1.1 csv文件讀寫
#讀取文件,以下兩種方式: #使用pandas讀入需要處理的表格及sheet頁 import pandas as pd df = pd.read_csv("test.csv",sheet_name='sheet1') #默認是utf-8編碼 #或者使用with關鍵字 with open("test.csv",encoding="utf-8")as df: #按行遍歷 for row in df: #修正 row = row.replace('陰性','0').replace('00.','0.') ... print(row) #將處理後的結果寫入新表 #建議用utf-8編碼或者中文gbk編碼,默認是utf-8編碼,index=False表示不寫出行索引 df.to_csv('df_new.csv',encoding='utf-8',index=False)
1.2 excel文件讀寫
#讀入需要處理的表格及sheet頁 df = pd.read_excel('測試.xlsx',sheet_name='test') df = pd.read_excel(r'測試.xlsx') #默認讀入第一個sheet #將處理後的結果寫入新表 df1.to_excel('處理後的數據.xlsx',index=False)
二、數據清洗
2.1 刪除空值
# 刪除空值行 # 使用索引 df.dropna(axis=0,how='all')#刪除全部值為空的行 df_1 = df[df['價格'].notna()] #刪除某一列值為空的行 df = df.dropna(axis=0,how='all',subset=['1','2','3','4','5'])# 這5列值均為空,刪除整行 df = df.dropna(axis=0,how='any',subset=['1','2','3','4','5'])#這5列值任何出現一個空,即刪除整行
2.2 刪除不需要的列
# 使用del, 一次隻能刪除一列,不能一次刪除多列 del df['sample_1'] #修改源文件,且一次隻能刪除一個 del df[['sample_1', 'sample_2']] #報錯 #使用drop,有兩種方法: #使用列名 df = df.drop(['sample_1', 'sample_2'], axis=1) # axis=1 表示刪除列 df.drop(['sample_1', 'sample_2'], axis=1, inplace=True) # inplace=True, 直接從內部刪除 #使用索引 df.drop(df.columns[[0, 1, 2]], axis=1, inplace=True) # df.columns[ ] #直接使用索引查找列,刪除前3列
2.3 刪除不需要的行
#使用drop,有兩種方法: #使用行名 df = df.drop(['行名1', '行名2']) # 默認axis=0 表示刪除行 df.drop(['行名1', '行名2'], inplace=True) # inplace=True, 直接從內部刪除 #使用索引 df.drop(df.index[[1, 3, 5]]) # df.index[ ]直接使用索引查找行,刪除1,3,5行 df = df[df.index % 2 == 0]#刪除偶數行
2.4 重置索引
#在刪除瞭行列數據後,造成索引混亂,可通過 reset_index重新生成連續索引 df.reset_index()#獲得新的index,原來的index變成數據列,保留下來 df.reset_index(drop=True)#不想保留原來的index,使用參數 drop=True,默認 False df.reset_index(drop=True,inplace=True)#修改源文件 #使用某一列作為索引 df.set_index('column_name').head()
2.5 統計缺失
#每列的缺失數量 df.isnull().sum() #每列缺失占比 df3.isnull().sum()/df.shape[0] #每行的缺失數量 df3.isnull().sum(axis=1) #每行缺失占比 df3.isnull().sum(axis=1)/df.shape[1]
2.6 排序
#按每行缺失值進行降序排序 df3.isnull().sum(axis=1).sort_values(ascending=False) #按每列缺失率進行降序排序 (df.isnull().sum()/df.isnull().count()).sort_values(ascending=False)
到此這篇關於python 文件讀寫和數據清洗的文章就介紹到這瞭,更多相關python數據處理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python pandas處理excel表格數據的常用方法總結
- python數據處理67個pandas函數總結看完就用
- Pandas數值排序 sort_values()的使用
- Python中的pandas表格模塊、文件模塊和數據庫模塊
- Python Pandas常用函數方法總結