python?文件讀寫和數(shù)據(jù)清洗
一、文件操作
- pandas內(nèi)置了10多種數(shù)據(jù)源讀取函數(shù),常見的就是CSV和EXCEL
- 使用read_csv方法讀取,結(jié)果為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關(guān)鍵字
with open("test.csv",encoding="utf-8")as df:
#按行遍歷
for row in df:
#修正
row = row.replace('陰性','0').replace('00.','0.')
...
print(row)
#將處理后的結(jié)果寫入新表
#建議用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
#將處理后的結(jié)果寫入新表
df1.to_excel('處理后的數(shù)據(jù).xlsx',index=False)二、數(shù)據(jù)清洗
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列值任何出現(xiàn)一個空,即刪除整行
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, 直接從內(nèi)部刪除 #使用索引 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, 直接從內(nèi)部刪除 #使用索引 df.drop(df.index[[1, 3, 5]]) # df.index[ ]直接使用索引查找行,刪除1,3,5行 df = df[df.index % 2 == 0]#刪除偶數(shù)行
2.4 重置索引
#在刪除了行列數(shù)據(jù)后,造成索引混亂,可通過 reset_index重新生成連續(xù)索引
df.reset_index()#獲得新的index,原來的index變成數(shù)據(jù)列,保留下來
df.reset_index(drop=True)#不想保留原來的index,使用參數(shù) drop=True,默認 False
df.reset_index(drop=True,inplace=True)#修改源文件
#使用某一列作為索引
df.set_index('column_name').head()2.5 統(tǒng)計缺失
#每列的缺失數(shù)量 df.isnull().sum() #每列缺失占比 df3.isnull().sum()/df.shape[0] #每行的缺失數(shù)量 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)
到此這篇關(guān)于python 文件讀寫和數(shù)據(jù)清洗的文章就介紹到這了,更多相關(guān)python數(shù)據(jù)處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Python進行數(shù)據(jù)清洗與存儲的基本方法
- 如何使用Python數(shù)據(jù)清洗庫
- 使用python數(shù)據(jù)清洗代碼實例
- 用Python進行數(shù)據(jù)清洗以及值處理
- Python常用的數(shù)據(jù)清洗方法詳解
- 一文帶你深入了解Python中的數(shù)據(jù)清洗
- 三個Python常用的數(shù)據(jù)清洗處理方式總結(jié)
- Python數(shù)據(jù)清洗&預(yù)處理入門教程
- Python實現(xiàn)數(shù)據(jù)清洗的示例詳解
- python數(shù)據(jù)清洗中的時間格式化實現(xiàn)
- Python實現(xiàn)數(shù)據(jù)清洗的18種方法
相關(guān)文章
python實現(xiàn)比對美團接口返回數(shù)據(jù)和本地mongo數(shù)據(jù)是否一致示例
這篇文章主要介紹了python實現(xiàn)比對美團接口返回數(shù)據(jù)和本地mongo數(shù)據(jù)是否一致,涉及Python基于requests模塊的數(shù)據(jù)請求與比較運算相關(guān)操作技巧,需要的朋友可以參考下2019-08-08
Python標準庫中內(nèi)置裝飾器@staticmethod和@classmethod
裝飾器是Python中強大而靈活的功能,用于修改或增強函數(shù)或方法的行為,本文就來介紹一下Python標準庫中內(nèi)置裝飾器@staticmethod和@classmethod,感興趣的可以了解一下2023-10-10
Selenium 模擬瀏覽器動態(tài)加載頁面的實現(xiàn)方法
這篇文章主要介紹了Selenium 模擬瀏覽器動態(tài)加載頁面的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
Python使用arrow庫優(yōu)雅地處理時間數(shù)據(jù)詳解
雖然Python提供了多個內(nèi)置模塊用于操作日期時間,但有的時候并不能滿足我們的需求,所以下面這篇文章主要給大家介紹了關(guān)于Python使用arrow庫如何優(yōu)雅地處理時間數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-10-10
driver = webdriver.Chrome()報錯問題及解決
這篇文章主要介紹了driver = webdriver.Chrome()報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
Python基于gevent實現(xiàn)高并發(fā)代碼實例
這篇文章主要介紹了Python基于gevent實現(xiàn)高并發(fā)代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05

