Pandas里面常用的一些數(shù)據(jù)分析函數(shù)總結(jié)
import pandas as pd
import numpy as np
pandas 有兩個(gè)主要的數(shù)據(jù)結(jié)構(gòu):Series 和 DataFrame;
Series 是一個(gè)一維數(shù)組對(duì)象 环葵,它包含一組索引和一組數(shù)據(jù)蔑赘,可以把它理解為一組帶索引的數(shù)組。
DataFrame 是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu)贪绘。它提供有序的列和不同類(lèi)型的列值炎咖。
df:Pandas DataFrame對(duì)象
s: Pandas Series對(duì)象
數(shù)據(jù)導(dǎo)入:
pd.read_csv(filename):從csv文件中導(dǎo)入數(shù)據(jù);
pd.read_table(filename):從限定分隔符的文本文件導(dǎo)入數(shù)據(jù)绍哎;
pd.read_excel(filename):從Excel文件導(dǎo)入數(shù)據(jù)来农;
pd.read_sql(query,connection_object):從SQL表/庫(kù)中導(dǎo)入數(shù)據(jù);
pd.read_json(json_string):從JSON格式的字符串導(dǎo)入數(shù)據(jù)崇堰;
pd.read_html(url):解析URLL沃于,字符串或者HTML文件;
pd.read_clipboard():從粘貼板獲取內(nèi)容海诲;
pd.DataFrame(dict):從字典對(duì)象導(dǎo)入數(shù)據(jù)繁莹;
數(shù)據(jù)導(dǎo)出:
df.to_csv(filename):導(dǎo)出數(shù)據(jù)到CSV文件;
df.excel(filename):導(dǎo)出數(shù)據(jù)到EXCEl文件特幔;
df.to_sql(table_nname,connection_object):導(dǎo)出數(shù)據(jù)到SQL表咨演;
df.json(filename):以json格式導(dǎo)出數(shù)據(jù)到文本文件;
創(chuàng)建對(duì)象:
pd.DataFrame(np.random.rand(20,5)):創(chuàng)建20行5列的隨即數(shù)組成的DataFrame對(duì)象蚯斯;
pd.Series(my_list):從可迭代對(duì)象my_list創(chuàng)建一個(gè)Series對(duì)象薄风;
df.index = pd.date_range('1900/1/30',periods=df.shape[0]):增加一個(gè)日期索引;
index和reindex聯(lián)合使用很有用處拍嵌,index可作為索引并且元素亂排序之后遭赂,所以跟著元素保持不變,因此横辆,當(dāng)重排元素時(shí)撇他,只需要對(duì)index進(jìn)行才重排即可:reindex。
數(shù)據(jù)查看:
df.info():查看索引龄糊、數(shù)據(jù)類(lèi)型和內(nèi)存信息;
df.tail():查看DataFrame對(duì)象的最后n行逆粹;
df.shape():查看行數(shù)和列數(shù)募疮;
df.head():查看DataFrame對(duì)象的前n行炫惩;
df.describe():查看數(shù)值型列的匯總統(tǒng)計(jì);
s.value_counts(dropna=False):查看Series對(duì)象的唯一值和計(jì)數(shù);
df.apply(pd.Seices.value_counts):查看DataFrame對(duì)象中每一列的唯一值和計(jì)數(shù)阿浓;
數(shù)據(jù)選人隆:
df[col]:根據(jù)列名,并以Series的形式返回列;
df[[col1, col2]]:以DataFrame形式返回多列筋蓖;
s.iloc[0]:按位置選取數(shù)據(jù)卸耘;
s.loc['index_one']:按索引選取數(shù)據(jù);
df.iloc[0,:]:返回第一行粘咖;
數(shù)據(jù)清洗:
df.columns = ['a','b','c']:重命名列名
pd.isnull():檢查DataFrame對(duì)象中的空值蚣抗,并返回一個(gè)Boolean數(shù)組;
pd.notnull():檢查DataFrame對(duì)象中的非空值瓮下,并返回一個(gè)Boolean數(shù)組
df.dropna():刪除所有包含空值的行翰铡;
df.fillna(x):用x替換DataFrame對(duì)象中所有的空值;
s.astype(float):將Series中的數(shù)據(jù)類(lèi)型更改為float類(lèi)型讽坏;
s.replace(1,'one'):用‘one’代替所有等于1的值
df.rename(columns=lambda x: x + 1):批量更改列名锭魔;
df.set_index('column_one'):更改索引列;
數(shù)據(jù)處理:
df[df[col] > 0.5]:選擇col列的值大于0.5的行路呜;
df.sort_values(col1):按照列col1排序數(shù)據(jù)迷捧,默認(rèn)升序排列;
df.groupby(col):返回一個(gè)按列col進(jìn)行分組的Groupby對(duì)象胀葱;
df.groupby(col1).agg(np.mean):返回按列col1分組的所有列的均值漠秋;
df.pivot_table(index=col1, values=[col2,col3], aggfunc=max):創(chuàng)建一個(gè)按列col1進(jìn)行分組,并計(jì)算col2和col3的最大值的數(shù)據(jù)透視表抵屿;
data.apply(np.mean):對(duì)DataFrame中的每一列應(yīng)用函數(shù)np.mean
數(shù)據(jù)合并:
df1.append(df2):將df2中的行添加到df1的尾部
df.concat([df1, df2],axis=1):將df2中的列添加到df1的尾部
df1.join(df2,on=col1,how='inner'):對(duì)df1的列和df2的列執(zhí)行SQL形式的join
數(shù)據(jù)統(tǒng)計(jì):
df.describe():查看數(shù)據(jù)值列的匯總統(tǒng)計(jì)膛堤;
df.mean():返回所有列的均值
df.corr():返回列與列之間的相關(guān)系數(shù);
df.count():返回每一列中的非空值的個(gè)數(shù)晌该;
df.max():返回每一列的最大值
df.min():返回每一列的最小值肥荔;
df.median():返回每一列的中位數(shù);
df.std():返回每一列的標(biāo)準(zhǔn)
Pandas支持的數(shù)據(jù)類(lèi)型:
int 整型
float 浮點(diǎn)型
bool 布爾類(lèi)型
object 字符串類(lèi)型
category 種類(lèi)
datetime 時(shí)間類(lèi)型
其他:
df.astypes: 數(shù)據(jù)格式轉(zhuǎn)換
df.value_counts:相同數(shù)值的個(gè)數(shù)統(tǒng)計(jì)
df.hist(): 畫(huà)直方圖
df.get_dummies: one-hot編碼朝群,將類(lèi)型格式的屬性轉(zhuǎn)換成矩陣型的屬性燕耿。比如:三種顏色RGB,紅色編碼為[1 0 0]姜胖;
后面會(huì)繼續(xù)更新誉帅;