python pandas詳細(xì)用法指南(推薦)
1 定義數(shù)據(jù)結(jié)構(gòu)
1.1 Series
pandas主要的數(shù)據(jù)結(jié)構(gòu)是 Series (一維數(shù)據(jù))與 DataFrame(二維數(shù)據(jù))。
Series (一維數(shù)據(jù)):可以是數(shù)字(整數(shù)、浮點(diǎn)數(shù)等)、字符串、列表,元組,字典等python對(duì)象。series的每個(gè)值都有一個(gè)索引,默認(rèn)從0開(kāi)始。具有不變性(創(chuàng)建后大小不變)。
pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
data可以是列表[1,2,3]
pd.Series([1,2,3])
可以是字符串[“a”,"b","c"]
pd.Series(["a","b","c"])
可以是數(shù)組np.array([1, 2, 3])
pd.Series(np.array([1, 2, 3]))
可以是字典{1: "a", 2: "b", 3: "c"}
,這種方式把索引指定為1,2,3。
pd.Series({1:"a",2:"b",3:"c"})
1.2 Dataframe
Dataframe(二維數(shù)據(jù))是一個(gè)二維的表格,有許多有序的列,每列的數(shù)據(jù)類(lèi)型可以不一樣,可以是數(shù)字(整數(shù)、浮點(diǎn)數(shù)等)、字符串、列表,元組,字典等python對(duì)象。Dataframe的每行每列分別有一個(gè)索引,默認(rèn)從0開(kāi)始。具有可變性!
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
data可以是二維列表[["a",1],["b",2],["c",3]]
,每一行都是一個(gè)列表
pd.DataFrame([["a",1],["b",2],["c",3]], columns=['abc', '123'])
data可以是二維數(shù)組np.array([[1,2],[3,4],[5,6]])
。
pd.DataFrame(np.array([[1,2],[3,4],[5,6]]), columns=['col1', 'col2'])
data可以是字典 {'Sex':["f", "f", "m"], 'Age':[10, 12, 13]}
,字典的鍵將成為列名,字典的值將成為數(shù)據(jù),這種方式需要值的長(zhǎng)度一樣。
pd.DataFrame({"Sex":["f","f","m"],"Age":[10,12,13]})
colomns是列名,可以是字典的鍵的子集或者排序,實(shí)現(xiàn)對(duì)數(shù)據(jù)的篩選和排序。
可以通過(guò)index初始索引標(biāo)簽來(lái)取出數(shù)據(jù)框data的一些列,得到字典格式的數(shù)據(jù)框,比如data = pd.DataFrame(index=data['col1'])
#就是將索引0 1 2 3用col1列的值來(lái)替代。
若數(shù)據(jù)有NaN值,可以:
pd.DataFrame([{"Sex":"f","Age":10},{"Sex":"f","Age":65,"edu":65}])
2 讀取和保存文件
2.1 載入csv文件
import pandas as pd df = pd.read_csv('data.csv')
2.2 載入excel文件
df=pd.read_excel('data.xlsx',sheet_name='Sheet1')
2.3 載入txt文件
df=pd.read_table(r"J:\data.txt", header=None)#不讀取文件第一行為列名
2.4 輸出csv文件
df.to_csv('data1.csv') #將 DataFrame 存儲(chǔ)為 csv 文件
3 讀取數(shù)據(jù)格式
一些常用的代碼:
data.head(10)
#讀取前10行,不填默認(rèn)為5data.tail(10)
#讀取尾部10行,不填默認(rèn)為5data.info()
#讀取數(shù)據(jù)基本信息,多少行多少列和每一列數(shù)據(jù)類(lèi)型。有多少空值data.shape
data.index
#索引data.colomns
#列名
修改列名
- a.columns = [‘rename_col1’,‘rename_col2’]
- a.rename(columns={‘rawname_col1’:‘rename_col1’})
4 訪(fǎng)問(wèn)某個(gè)位置的元素
4.1 讀取數(shù)據(jù)某一列:
data["Sex"]
4.2 訪(fǎng)問(wèn)具體某個(gè)位置的元素:
有兩種方式,一種是.iloc訪(fǎng)問(wèn)索引整數(shù),一種是.loc是訪(fǎng)問(wèn)列標(biāo)簽
4.2.1 .iloc[] #訪(fǎng)問(wèn)位置 是具體的整數(shù)
data.iloc[:,0] #第一列的所有行
data.iloc[:,0:1]#第一列的所有行,注意在python里區(qū)間是不包含最后一個(gè)元素的,并且把0當(dāng)作初始值
data.iloc[0,1]
#第一行第二列的元素
4.2.2 .loc #訪(fǎng)問(wèn)標(biāo)簽 即列索引 列名
data.loc[0,'Sex']
#sex列所有行
data.loc[0,"Sex"]
#具體數(shù)值
5 修改數(shù)據(jù)
5.1 增減列
修改某一列的數(shù)據(jù)data['Sex']=['m','m']
加新的一列data['value']=[10,1]
加新的一行data.loc[3]=['f',10,2,1]
5.2 刪除行列
刪除某列元素data.drop('Sex',axis=1)
如果不知道列名,可以用索引選哪一列,比如第一列data.columns[0]data.drop(data.columns[0],axis=1)
刪除某行元素data.drop(0)
#刪除index為0的行
如果想刪除兩行
indices_to_drop = [1, 3] df_dropped = df.drop(indices_to_drop)
5.3 索引和切片
提取多列
提取多行
5.4 數(shù)據(jù)分析
5.4.1 描述性統(tǒng)計(jì)
data.describe()
5.4.2 判斷序列中元素是否在另一個(gè)序列中
isin()函數(shù)是一個(gè)非常有用的工具,用于檢查一個(gè)序列data(如DataFrame或Series)中的元素是否存在于另一個(gè)序列data1、列表、元組、Series或DataFrame中。
data.isin(data1)
5.4.3 刪除字符串中的某些字符(刪除功能)
使用strip()可以將字符串中指定的字符刪除,如果沒(méi)有指定,就是刪除空白格。
若給定字符,將從字符串開(kāi)頭和結(jié)尾的字符開(kāi)始刪除,返回剩下的部分,如果給定字符與開(kāi)頭結(jié)尾不匹配,則返回原字符。
指定的字符串只要有開(kāi)頭或結(jié)尾的字符就可以刪除,順序沒(méi)有關(guān)系。
5.4.4 將Series的值轉(zhuǎn)為字符串**
pandas.Series.str可以對(duì)字符串方便的做各項(xiàng)操作。
比如a是一個(gè)Series
我們可以看到a.str.split()中的值變?yōu)榱俗址?/p>
5.4.4 將Series中的值根據(jù)文本逗號(hào)分列(分割功能)
使用split()將可以將文本根據(jù)逗號(hào)分成多列。原理是通過(guò)指定分隔符(例子是逗號(hào))對(duì)字符串進(jìn)行切片。
利用pandas.Series.str.split假設(shè)a為Series如下所示,分隔符為逗號(hào),設(shè)置expand=True則python自動(dòng)在輸出中將分割的內(nèi)容放不同的列中,否則默認(rèn)不分開(kāi)。
a.str.split(',',expand=True)
5.4.5 判斷Series的某個(gè)值是不是字符串
因?yàn)橛袝r(shí)候文件中的數(shù)字是字符串格式,想變?yōu)閒loat格式
比如看series的col1列的第二個(gè)值是不是字符串
isinstance(series['col1'][1], str)
結(jié)果輸出 True
5.4.6 Series中的值進(jìn)行格式轉(zhuǎn)換
使用Series.astype轉(zhuǎn)變值得格式,比如轉(zhuǎn)為float格式:Series.astype(float)
總結(jié)
到此這篇關(guān)于python pandas詳細(xì)用法的文章就介紹到這了,更多相關(guān)python pandas用法指南內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python如何基于selenium實(shí)現(xiàn)自動(dòng)登錄博客園
這篇文章主要介紹了Python如何基于selenium實(shí)現(xiàn)自動(dòng)登錄博客園,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Python使用Pickle模塊進(jìn)行數(shù)據(jù)保存和讀取的講解
今天小編就為大家分享一篇關(guān)于Python使用Pickle模塊進(jìn)行數(shù)據(jù)保存和讀取的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04matplotlib畫(huà)混淆矩陣與正確率曲線(xiàn)的實(shí)例代碼
混淆矩陣也稱(chēng)誤差矩陣,是表示精度評(píng)價(jià)的一種標(biāo)準(zhǔn)格式,下面這篇文章主要給大家介紹了關(guān)于matplotlib畫(huà)混淆矩陣與正確率曲線(xiàn)的相關(guān)資料,需要的朋友可以參考下2021-06-06python openCV實(shí)現(xiàn)攝像頭獲取人臉圖片
這篇文章主要為大家詳細(xì)介紹了python openCV實(shí)現(xiàn)攝像頭獲取人臉圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08python編寫(xiě)腳本之pyautogui的安裝和使用教程
pyautogui一個(gè)神奇的圖像自動(dòng)化庫(kù),學(xué)會(huì)之后無(wú)所不能,下面這篇文章主要給大家介紹了關(guān)于python編寫(xiě)腳本之pyautogui的安裝和使用的相關(guān)資料,需要的朋友可以參考下2021-12-12