天天看點

Python基礎 | pandas.dataframe 專題使用指南

1.選取行名、列名、值

Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南

2.以标簽(行、列的名字)為索引選擇資料—— x.loc[行标簽,列标簽]

Python基礎 | pandas.dataframe 專題使用指南

3.以位置(第幾行、第幾列)為索引選擇資料—— x.iloc[行位置,列位置]

Python基礎 | pandas.dataframe 專題使用指南

4.同時根據标簽和位置選擇資料——x.ix[行,列]

Python基礎 | pandas.dataframe 專題使用指南

5.選擇連續的多行多列——切片

起點索引:終點索引 這種用法叫做一個切片,指從起點索引到終點索引。看實際用法就懂了。

如果起點索引省略代表從頭開始,終點索引省略代表直到最後,都省略就代表全部了。

切片在.loc、.iloc、.ix三種方法中都可以應用

Python基礎 | pandas.dataframe 專題使用指南

由上例可見,當以位置為索引時,切片是不包括終點的,是左閉右開的。即第1列到第3列不是寫作0:2而是0:3。

Python基礎 | pandas.dataframe 專題使用指南

6.選擇不連續的某幾行或某幾列

Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南

備注:當以标簽名選取不連續的某幾行的時候在這個例子中如df.loc['2016-02-02','2016-02-04',:]這樣寫會出錯,,是時間格式的原因,這樣寫就可以了df.ix[[pd.Timestamp('2016-02-02'), pd.Timestamp('2016-02-04')]]

7.簡便地擷取行或列

直接用切片擷取行,直接用标簽名擷取列。注意不要錯亂。

Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南

8.如何傳回一個dataframe的單列或單行

如上,此時傳回的是一個series,而不是dataframe。有時單獨隻擷取一行的時候也會傳回一個series,如df.ix[0,:]。

Python基礎 | pandas.dataframe 專題使用指南

若要傳回dataframe,可用中括号把索引括上,如下。

Python基礎 | pandas.dataframe 專題使用指南

9.按條件選取資料——df[邏輯條件]

邏輯條件支援&(與)、|(或)、~(非)等邏輯運算

Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南

這個方法有個常用情景,即按條件修改資料:

Python基礎 | pandas.dataframe 專題使用指南

02.dataframe轉置、排序

1.轉置 df.T

Python基礎 | pandas.dataframe 專題使用指南

2.按行名或列名排序——df.sort_index

df.sort_index(axis=0,ascending=True)

axis= 0 為按行名排序;1 為按列名排序

ascending= True 為升序; False 為降序

Python基礎 | pandas.dataframe 專題使用指南

3.按值排序——df.sort_index

df.sort(by=, ascending=True)

by= 按哪一列的值排序,預設是按行标簽排序

Python基礎 | pandas.dataframe 專題使用指南

03.dataframe增删行或列

1.獲得一個datframe資料類型的樣例

Python基礎 | pandas.dataframe 專題使用指南

2.增加一列或一行

Python基礎 | pandas.dataframe 專題使用指南

3.删除行或列——df.drop

df.drop(labels,axis=0,inplace=Flase)

labels 行或列的标簽名,寫在第一個可省略。

axis= 0 删除行;1 删除列

inplace= False 生成新dataframe;True 不生成新的dataframe,替換原本dataframe。預設是False。

該操作預設傳回的是另一個新的dataframe,以至于原來的沒有變,如在下面第一個例子中删除的列,在第二個例子中還有。要替換原來的請調整inplace參數

Python基礎 | pandas.dataframe 專題使用指南

04.連結多個dataframe

1.concat,concat([df1,df2,...],axis=0)

axis= 0 縱向;1 橫向。

使用前需導入過pandas子產品

使用時要注意連接配接的dataframe行列對齊

可以同時拼接多個dataframe

拼接是強制的,允許連接配接後存在同名的行或列,見縱向連接配接的第二個例子

Python基礎 | pandas.dataframe 專題使用指南

2.橫向連接配接

Python基礎 | pandas.dataframe 專題使用指南

3.縱向連接配接

Python基礎 | pandas.dataframe 專題使用指南

05.組建dataframe

1.組建方法——pd.DataFrame

pd.DataFrame(data=None, index=None, columns=None)

data= 資料

index= 索引,即行名、行表頭

columns= 列名、清單頭

使用前要執行前面的import pandas as pd

Python基礎 | pandas.dataframe 專題使用指南

2.用字典型資料組建——pd.DataFrame

方法基本同上,因為字典型自帶一個标簽,是以就不用寫列名了。

Python基礎 | pandas.dataframe 專題使用指南

3.簡便地獲得聚寬資料中的時間索引

有時建立一個dataframe時,為了和平台資料保持一緻,需要使用相同的時間行索引,但時間資料操作複雜,而且涉及到節假日、非交易日等問題,直接建立比較困難,這裡介紹一種簡單的方法,快速獲得跟平台資料一緻的時間索引。原理就是直接把平台資料的時間索引拿出來。例子如下:

Python基礎 | pandas.dataframe 專題使用指南

06.dataframe的缺失值處理

1.去掉缺失值——df.dropna

df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

axis= 0 按行檢查缺失;1 按列檢查缺失。不寫預設為0

how= 'any' 有一個缺失值就算缺失;'all' 行或列(根據axis參數)全缺失才算缺失。不寫預設為'any'

thresh= x,x為一個整數,含義為行或列(根據axis參數)中非缺失數值個數大于等于x則不算缺失,即小于x則算缺失,會被去除。

subset= 标簽名。選擇要對哪個列或行(與axis中的相反)進行檢查缺失,沒寫的則不檢查。即限制檢查範圍。

相對複雜,請看例子和與例子注釋。

Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南

2.對缺失值進行填充——df.fillna

df.fillna(value=None,axis=None)

value= 替換缺失值的值。可以是單個值、字典、dataframe等,但不能是list。差別請看例子。

Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南

3.判斷資料是否為缺失——df.isnull

為什麼要這樣用這個方法判斷是否為缺失?

因為nan不等于nan(如下例),即用類似x == nan條件為真 這樣的判斷方法無法判斷一個值x是否為nan。

Python基礎 | pandas.dataframe 專題使用指南

07.常用統計函數

常用統計函數

describe 針對Series或個DataFrame列計算彙總統計

count 非na值的數量

min、max 計算最小值和最大值

idxmin、idxmax 計算能夠擷取到最大值和最小值得索引值

quantile 計算樣本的分位數(0到1)

sum 值的總和

mean 值得平均數

median 值得算術中位數(50%分位數)

mad 根據平均值計算平均絕對離差

var 樣本值的方差

std 樣本值的标準差

skew 樣本值得偏度(三階矩)

kurt 樣本值得峰度(四階矩)

cumsum 樣本值得累計和

cummin,cummax 樣本值得累計最大值和累計最小值

cumprod 樣本值得累計積

diff 計算一階差分

pct_change 計算百分數變化

檢視函數的詳細資訊

08.panel類型資料分解成dataframe

1.panel的取用方法

panel類型的的取用方法類似與dataframe,看下例子也就明白了。一般要做統計方面的工作,也是如下分解成dataframe進行操作,基本滿足日常需求。了解更多panel的操作可參考:

http://pandas.pydata.org/pandas-docs/stable/api.html#panel

2.panel類型資料分解成dataframe方法

Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南

09.研究記憶體取dataframe

1.把dataframe存成csv檔案——df.to_csv()

用法如下,檔案都是存到研究空間中的,如果不寫路徑是預設是存在根目錄,如df.to_csv('df.csv')

Python基礎 | pandas.dataframe 專題使用指南
Python基礎 | pandas.dataframe 專題使用指南

2.讀取被存成csv檔案的dataframe——pd.read_csv()

Python基礎 | pandas.dataframe 專題使用指南

原文釋出時間為:2018-08-02

本文作者:TWist

本文來自雲栖社群合作夥伴“

Python中文社群

”,了解相關資訊可以關注“