pandas常用方法

2021-10-01 03:20:38 字數 4979 閱讀 7970

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import datetime

import re

df = pd.read_csv(path='file.csv')

引數:header=none 用預設列名,0,1,2,3...

names=['a', 'b', 'c'...] 自定義列名

index_col='a'|['a', 'b'...] 給索引列指定名稱,如果是多重索引,可以傳list

skiprows=[0,1,2] 需要跳過的行號,從檔案頭0開始,skip_footer從檔案尾開始

nrows=n 需要讀取的行數,前n行

chunksize=m 返回迭代型別textfilereader,每m條迭代一次,資料占用較大記憶體時使用

sep=':'資料分隔預設是',',根據檔案選擇合適的分隔符,如果不指定引數,會自動解析

skip_blank_lines=false 預設為true,跳過空行,如果選擇不跳過,會填充nan

converters=

對選定列使用函式func轉換,通常表示編號的列會使用(避免轉換成int)

dfjs = pd.read_json

('file.json'

) 可以傳入json格式字串

dfex = pd.read_excel

('file.xls', sheetname=[0,1..]) 讀取多個sheet頁,返回多個df的字典

df.duplicated() 返回各行是否是上一行的重複行

df.drop_duplicates() 刪除重複行,如果需要按照列過濾,引數選填['col1', 'col2',...]

df.fillna(0) 用實數0填充na

df.dropna() axis=0|1 0-index 1-column

how='all'|'any' all-全部是na才刪 any-只要有na就全刪

del df['col1'] 直接刪除某一列

df.drop(['col1',...], aixs=1) 刪除指定列,也可以刪除行

df.column = col_lst 重新制定列名

df.rename(index=

, 重新命名索引名和列名

columns=

)df.replace(dict) 替換df值,前後值可以用字典表,

def get_digits

(str)

:m = re.match

(r'(\d+(\.\d+)?)', str.decode

('utf-8'))

if m is not none

:return float

(m.groups

()[0])

else

:return 0

df['col1'].map

(func) series.map,只對列進行函式轉換

pd.merge

(df1, df2, on='col1',

how='inner',sort=true) 合併兩個dataframe,按照共有的某列做內連線(交集),outter為外連線(並集),結果排序

pd.merge

(df1, df2, left_on='col1',

right_on='col2'

) df1 df2沒有公共列名,所以合併需指定兩邊的參考列

pd.concat

([sr1, sr2, sr3,...], axis=0) 多個series堆疊成多行,結果仍然是乙個series

pd.concat

([sr1, sr2, sr3,...], axis=1) 多個series組合成多行多列,結果是乙個dataframe,索引取並集,沒有交集的位置填入預設值nan

df1.combine_first

(df2) 用df2的資料補充df1的預設值nan,如果df2有更多行,也一併補上

df.stack

() 列旋轉成行,也就是列名變為索引名,原索引變成多層索引,結果是具有多層索引的series,實際上是把資料集拉長

df.unstack

() 將含有多層索引的series轉換為dataframe,實際上是把資料集壓扁,如果某一列具有較少類別,那麼把這些類別拉出來作為列

df.pivot

() 實際上是unstack的應用,把資料集壓扁

pd.get_dummies

(df['col1'], prefix='key'

) 某列含有有限個值,且這些值一般是字串,例如國家,借鑑點陣圖的思想,可以把k個國家這一列量化成k列,每列用0、1表示

df.columns 列名,返回index型別的列的集合

df.index 索引名,返回index型別的索引的集合

df.shape 返回tuple,行x列

df.head

(n=n) 返回前n條

df.tail

(n=m) 返回後m條

df.values 值的二維陣列,以numpy.ndarray物件返回

df.index dataframe的索引,索引不可以直接賦值修改

df.reindex

(index=['row1', 'row2',...]

columns=['col1', 'col2',...]) 根據新索引重新排序

df[m

:n] 切片,選取m~n-1行

df[df['col1'] > 1] 選取滿足條件的行

df.query

('col1 > 1'

) 選取滿足條件的行

df.query

('col1==[v1,v2,...]'

)df.ix[:,'col1'] 選取某一列

df.ix['row1', 'col2'] 選取某一元素

df.ix[:,:

'col2'] 切片選取某一列之前(包括col2)的所有列

df.loc[m

:n] 獲取從m~n行(推薦)

df.iloc[m

:n] 獲取從m~n-1行

df.loc[m

:n-1,'col1'

:'coln'] 獲取從m~n行的col1~coln列

sr=df['col'] 取某一列,返回series

sr.values series的值,以numpy.ndarray物件返回

sr.index series的索引,以index物件返回

df.t dataframe轉置

df1 + df2 按照索引和列相加,得到並集,nan填充

df1.add

(df2, fill_value=0) 用其他值填充

df1.add/sub//mul/div 四則運算的方法

df - sr dataframe的所有行同時減去series

df * n 所有元素乘以n

df.add

(sr, axis=0) dataframe的所有列同時減去series

sr.order

() series公升序排列

df.sort_index

(aixs=0, ascending=true) 按行索引公升序

df.sort_index

(by=['col1', 'col2'...]) 按指定列優先排序

df.rank

() 計算排名rank值

sr.unique series去重

sr.value_counts() series統計頻率,並從大到小排序,dataframe沒有這個方法

sr.describe() 返回基本統計量和分位數

df.describe() 按各列返回基本統計量和分位數

df.count() 求非na值得數量

df.max() 求最大值

df.min() 求最大值

df.sum(axis=0) 按各列求和

df.mean() 按各列求平均值

df.median() 求中位數

df.var() 求方差

df.std() 求標準差

df.mad() 根據平均值計算平均絕對利差

df.cumsum() 求累計和

sr1.corr(sr2) 求相關係數

df.cov() 求協方差矩陣

df1.corrwith(df2) 求相關係數

pd.cut(array1, bins) 求一維資料的區間分布

pd.qcut(array1, 4) 按指定分位數進行區間劃分,4可以替換成自定義的分位數列表

df['col1'].groupby(df['col2']) 列1按照列2分組,即列2作為key

df.groupby('col1') dataframe按照列1分組

grouped.aggreagte(func) 分組後根據傳入函式來聚合

grouped.aggregate([f1, f2,...]) 根據多個函式聚合,表現成多列,函式名為列名

grouped.aggregate([('f1_name', f1), ('f2_name', f2)]) 重新命名聚合後的列名

grouped.aggregate(

) 對不同的列應用不同函式的聚合,函式也可以是多個

df.pivot_table

(['col1', 'col2'],

rows=['row1', 'row2'],

aggfunc=[np.mean, np.sum]

fill_value=0,

margins=true) 根據row1, row2對col1, col2做分組聚合,聚合方法可以指定多種,並用指定值替換預設值

pd.crosstab

(df['col1'], df['col2']) 交叉表,計算分組的頻率

pandas 常用方法

import pandas as pd pd.read csv filename,encoding utf 8 讀取csv pd.to csv filename 儲存檔案,filename為檔案路徑,可以是相對路徑or絕對路徑 pd.to csv filename,index 0 儲存到檔案時,不要...

pandas 常用統計方法

pandas 物件有一些統計方法。它們大部分都屬於約簡和匯 計,用於從 series 中提取單個值,或從 dataframe 的行或列中提取乙個 series。比如dataframe.mean axis 0,skipna true 方法,當資料集中存在 na 值時,這些值會被簡單跳過,除非整個切片 ...

Pandas常用的方法

讀取 寫入read csv to csv read excel to excel read hdf to hdf read sql to sql read json to json read msgpack experimental to msgpack experimental read html...