Python入門之使用pandas分析excel數(shù)據(jù)
1.問題
在python中,讀寫excel數(shù)據(jù)方法很多,比如xlrd、xlwt和openpyxl,實(shí)際上限制比較多,不是很方便。比如openpyxl也不支持csv格式。有沒有更好的方法?
2.方案
更好的方法可以使用pandas,雖然pandas不是專門處理excel數(shù)據(jù),但處理excel數(shù)據(jù)確實(shí)很方便。
本文使用excel的數(shù)據(jù)來自網(wǎng)絡(luò),數(shù)據(jù)內(nèi)容如下:
2.1.安裝
使用pip進(jìn)行安裝。
pip3 install pandas
導(dǎo)入pandas:
import pandas as pd
下文使用pd進(jìn)行pandas的操作。
2.2.讀寫文件
讀取文件,比如excel,csv文件
# df是pandas.core.frame.DataFrame類型 df = pd.read_excel('./data/2020-suv.xlsx') # read_csv可以指定分割符,編碼方式等 df2 = pd.read_csv('./data/2020-suv.csv')
寫入文件:
df.to_excel('./data/2020-suv-new.xlsx') df.to_csv('./data/2020-suv-new.csv')
2.3.數(shù)據(jù)操作
all_cols = df.columns print(all_cols) # 輸出,df.columns并非list類型 Index(['銷量排名', '車系', '官方價(jià)', '從屬品牌', '1-12月銷量'], dtype='object') # df.columns并非list類型,可以轉(zhuǎn)化list cols = list(df.columns)
獲取列數(shù)據(jù)
col_data = df[u'車系'] mul_col_data = df[ [u'車系', u'1-12月銷量'] ]
獲取行數(shù)據(jù)
row_data = df.iloc[row_index]
獲取所有行數(shù)據(jù)
all_data = df.values
切片獲取多行數(shù)據(jù)
mul_row_data = df.iloc[2:4]
獲取單元個(gè)數(shù)據(jù)
cell_data = df.iloc[row_index][col_index]
2.4.數(shù)據(jù)篩選
Excel數(shù)據(jù)篩選比較實(shí)用,用pandas同樣可以,并且篩選代碼保存后,下次可以直接使用。
某個(gè)字段包含指定值
# 包含一個(gè)值,na表示是否需要填充,case表示是否區(qū)分大小寫,更強(qiáng)大的是contains還支持正則表達(dá)式 sub_df = df[ df[col_name].str.contains('key1', na=False, case=False) ] # 包含多個(gè)值,多次調(diào)用即可 sub_df1 = df[ df[col_name].str.contains('key1', na=False, case=False) ] sub_df2 = sub_df1[ sub_df1[col_name].str.contains('key2', na=False, case=False) ] # 包含多個(gè)值(或) sub_df = df[ df[col_name].str.contains('key1|key2|key3', na=False, case=False) ] # 不包含,也就是非的過濾 sub_df = df[ ~df[col_name].str.contains('key1', na=False, case=False) ]
上述操作,都假設(shè)字段類型是字符串類型,不然會拋異常??梢酝ㄟ^以下的方法,可以判斷字段是否是字符類型:
pd.api.types.is_string_dtype(df[u'車系']) # 其他類型也有類似的函數(shù),可以用dir查看有哪些類型判斷 print(dir(pd.api.types)) # 可以通過dtypes查看字段的類型 pd.dtypes pd[u'1-12月銷量'].dtypes
條件過濾
# 大于 df[ df['1-12月銷量'] > 50000 ] .values # 相等 df[ df['1-12月銷量'] == 50000 ] .values
2.5.數(shù)據(jù)寫入
添加一行數(shù)據(jù):
# 插在最后,row_datas是list df.loc[len(df.index)] = row_datas
插入一列數(shù)據(jù)
# 在指定列前面插上一列數(shù)據(jù) df.insert( col_index, col_name, col_datas, True)
更新某個(gè)單元值
df.iloc[row][col] = u'new-data'
2.6.數(shù)據(jù)刪除
刪除一列
df2 = df.drop('官方價(jià)', axis=1, inplace=False) print(df2) # 輸出 銷量排名 車系 從屬品牌 1-12月銷量 0 1 哈弗H6 哈弗 376864 1 2 本田CR-V 本田 249983 2 3 博越 吉利汽車 240811 3 4 途觀L 大眾 178574 4 5 長安CS75 PLUS 長安汽車 266824 .. ... ... ... ... 282 283 北汽新能源EX 北汽新能源 879 283 284 奔騰X40 奔騰 20412 284 285 標(biāo)致2008新能源 標(biāo)致 37 285 286 獵豹CS10 獵豹汽車 14 286 287 森雅R7 一汽 1 [287 rows x 4 columns]
刪除一行
df3 = df.drop(2, axis=0, inplace=False) print(df3) # 輸出 銷量排名 車系 官方價(jià) 從屬品牌 1-12月銷量 0 1 哈弗H6 9.80-15.49萬 哈弗 376864 1 2 本田CR-V 16.98-27.68萬 本田 249983 3 4 途觀L 21.58-28.58萬 大眾 178574 4 5 長安CS75 PLUS 10.69-15.49萬 長安汽車 266824 5 6 本田XR-V 12.79-17.59萬 本田 168272 .. ... ... ... ... ... 282 283 北汽新能源EX 18.39-20.29萬 北汽新能源 879 283 284 奔騰X40 暫無報(bào)價(jià) 奔騰 20412 284 285 標(biāo)致2008新能源 16.60-18.80萬 標(biāo)致 37 285 286 獵豹CS10 7.98-11.98萬 獵豹汽車 14 286 287 森雅R7 6.69-10.69萬 一汽 1 [286 rows x 5 columns]
3.討論
pandas庫用于大數(shù)據(jù)分析和AI,庫本身比較復(fù)雜,很多功能未必用得上,日常使用可以簡單的封裝,能夠讀、寫、搜索excel或csv數(shù)據(jù),pandas比起專門操作excel的庫要好用得多,簡單封裝一下即可。詳細(xì)的使用說明,可以參見pandas官方文檔。
https://pandas.pydata.org/docs/user_guide/index.html#user-guide
總結(jié)
到此這篇關(guān)于Python入門學(xué)習(xí)之使用pandas分析excel數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python用pandas分析excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python容器類型轉(zhuǎn)換的3種方法實(shí)例
使用Python我們可以輕松地將數(shù)據(jù)轉(zhuǎn)換成不同的類型,下面這篇文章主要給大家介紹了關(guān)于Python容器類型轉(zhuǎn)換的3種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05Qt5.14 與 OpenCV4.5 教程之圖片增強(qiáng)效果
這篇文章主要介紹了Qt5.14 與 OpenCV4.5 教程之圖片增強(qiáng)效果的實(shí)現(xiàn),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-11-11Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的分類
今天給大家整理了Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的分類的文章,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)的小伙伴們很有幫助,需要的朋友可以參考下2021-06-06Python輸入的多種情況超詳細(xì)解讀(單行、多行及數(shù)組)
對于 Python 來說有多種方式可以輸入數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Python輸入的多種情況超詳細(xì)解讀,分別是單行、多行及數(shù)組,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03Python批量實(shí)現(xiàn)Word/EXCEL/PPT轉(zhuǎn)PDF
在日常辦公和文檔處理中,有時(shí)我們需要將多個(gè)Word文檔、Excel表格或PPT演示文稿轉(zhuǎn)換為PDF文件,本文將介紹如何使用Python編程語言批量實(shí)現(xiàn)將多個(gè)Word、Excel和PPT文件轉(zhuǎn)換為PDF文件,需要的可以參考下2023-09-09django drf框架中的user驗(yàn)證以及JWT拓展的介紹
這篇文章主要介紹了django drf框架中的user驗(yàn)證以及JWT拓展的介紹,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08解決安裝torch后,torch.cuda.is_available()結(jié)果為false的問題
這篇文章主要介紹了解決安裝torch后,torch.cuda.is_available()結(jié)果為false的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12