亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

pandas常用函數

張軍 4512 0

張軍博客

本文研究的主要是pandas常用函數,具體介紹如下。

import語句

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={'col1', func} 對選定列使用函數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={'row1':'A'}, 重命名索引名和列名

columns={'col1':'A1'}) 

df.replace(dict) 替換df值,前后值可以用字典表,{1:‘A', '2':'B'}

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.apply(get_digits) DataFrame.apply,只獲取小數部分,可以選定某一列或行

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({'col1':f1, 'col2':f2,...}) 對不同的列應用不同函數的聚合,函數也可以是多個

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']) 交叉表,計算分組的頻率

總結

以上就是本文關于Python pandas常用函數詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對張軍博客的支持!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久一区二区精品综合 | 精品久久久久久亚洲 | 一区二区三区免费精品视频 | 国产中文字幕视频 | 男女生性毛片免费观看 | 最新69成人精品毛片 | 国内精品一级毛片免费看 | 久久综合成人 | 日本精品久久久久中文字幕8 | 国产片网址 | 伊人久久精品成人网 | 精品久久洲久久久久护士免费 | 98精品国产综合久久 | 久久的精品99精品66 | 天天干天天草 | 激情都市久久爱 | 国产伦一区二区三区免费 | 久久手机视频 | 国产精品久久久久久亚洲伦理 | 久久亚洲精品中文字幕三区 | 狠狠狠狠狠狠狠狠狠狠 | 国内精自线一二区 | 男人都懂www深夜免费网站 | 国产精品亚洲一区二区麻豆 | 日本人69视频jizz免费看 | 日韩一二区 | 99热在线获取最新地址 | 成人午夜视频免费看欧美 | 国产福利影院 | 日韩久久久精品中文字幕 | 久99久爱精品免费观看视频 | 亚洲视频在线一区二区三区 | 91视频一区二区 | 国产一区二区精品在线观看 | 国产95在线 | 亚洲 | 国产日本欧美在线观看 | 色婷婷久久综合中文久久一本 | 亚洲精品美女久久777777 | 国产中日韩一区二区三区 | 日韩xx00| 中文国产成人精品久久水 |