pandas最常用的資料物件是資料框(dataframe)和series。資料框與r中的dataframe格式類似,都是乙個二維陣列。series則是乙個一維陣列,類似於列表。資料框是pandas中最常用的資料組織方式和物件。
series是一種一維資料結構,每乙個元素都帶有乙個索引,與一維陣列的含義相似,其中索引可以為數字或字串。series結構名稱:
dataframe是一種二維資料結構,資料以**形式(與excel類似)儲存,有對應的行和列。dataframe結構名稱:
最常用的方法是通過anaconda安裝,在終端或命令符輸入如下命令安裝:
conda install pandas
若未安裝anaconda,使用python自帶的包管理工具pip來安裝:
pip install pandas
模組匯入:
import pandas as pd # 匯入pandas庫
print(pd.__version__) # 列印pandas版本資訊
#匯入
pd.read_csv(filename):從csv檔案匯入資料
pd.read_excel(filename):從excel檔案匯入資料
pd.read_sql(query, connection_object):從sql表/庫匯入資料
pd.read_json(json_string):從json格式的字串匯入資料
pd.read_html(url):解析url、字串或者html檔案,抽取其中的tables**
pd.read_clipboard():從你的貼上板獲取內容,並傳給read_table()
pd.dataframe(dict):從字典物件匯入資料,key是列名,value是資料
#匯出df.to_csv(filename):匯出資料到csv檔案
df.to_excel(filename):匯出資料到excel檔案
df.to_sql(table_name, connection_object):匯出資料到sql表
# df:任意的pandas dataframe物件# s:任意的pandas series物件
df.head(n):檢視dataframe物件的前n行,預設5行
df.tail(n):檢視dataframe物件的最後n行
df.shape():檢視行數和列數
df.dtype:檢視資料框每一列的資料型別
df.index:檢視索引
df.columns:檢視列名
df.info():檢視索引、資料型別和記憶體資訊
df.describe():顯示描述性統計資料,包括集中趨勢、分散趨勢、形狀等
s.value_counts(dropna=false):檢視series物件的唯一值和計數
# df:任意的pandas dataframe物件# s:任意的pandas series物件
#選取df[col]:根據列名,並以series的形式返回列
df[[col1, col2,...]]:以dataframe形式返回多列
df.iloc[where]:按整數索引選取資料,選取單個行或行子集
df.iloc[:,where]:按整數索引選取資料,選取單個列或列子集
df.iloc[where_i,where_j]:按整數索引選取資料,同時選取行和列
df.loc[col]:通過軸標籤選取資料,選取單個行貨一組行
df.loc[:,col]:通過軸標籤選取資料,選取單列或列子集
df.loc[col1,col2]:通過軸標籤選取資料,同時選取行和列
#過濾df[df['col3']==true]:單獨列為基礎選擇符合條件的資料
df[df=='a']:以所有的列為基礎選擇符合條件的資料
df[(df['col2']=='a') & (df['col3']==true)]:多個篩選條件,且多個條件的邏輯為「且」,用&表示
df[(df['col2']=='a') | (df['col3']==true)]:多個篩選條件,且多個條件的邏輯為「或」,用|表示
df[df['col1'].isin([1,2])]:基於特定值的範圍的資料查詢
df.query('col2=="b"'):按照類似sql的規則篩選資料
# df:任意的pandas dataframe物件
# s:任意的pandas series物件
df.t:轉置資料框,行和列轉換
df.columns = ['a','b','c']:重新命名列名
pd.isnull():檢查dataframe物件中的空值,並返回乙個boolean陣列
pd.notnull():檢查dataframe物件中的非空值,並返回乙個boolean陣列
df.dropna():刪除所有包含空值的行
df.dropna(axis=1):刪除所有包含空值的列
df.dropna(axis=1,thresh=n):刪除所有小於n個非空值的行
df.fillna(x):用x替換dataframe物件中所有的空值
s.astype(float):將series中的資料型別更改為float型別
s.replace(1,'one'):用『one』代替所有等於1的值
s.replace([1,3],['one','three']):用'one'代替1,用'three'代替3
df.rename(columns=lambda x: x + 1):批量更改列名
df.rename(columns=):選擇性更改列名
df.set_index('column_one'):更改索引列
df.rename(index=lambda x: x + 1):批量重新命名索引
df.sort_values(['col1']):按值排序,預設為正序,可通過ascending=false指定倒序排序
df.sort_index(ascending=false):按索引排序,預設為正序,可通過ascending=false指定倒序排序
df.drop_duplicates(['col']):去重重複項,通過指定列設定去重的參照
df1.merge(df2,on='col1',how='inner')
pd.concat([df1, df2],axis=1):將df2中的列新增到df1的尾部
df1.join(df2,on=col1,how='inner'):對df1的列和df2的列執行sql形式的join
# df:任意的pandas dataframe物件
# s:任意的pandas series物件
df['col3'].map(lambda x:x*2):將乙個函式或匿名函式應用到series或資料框的特定列
df.groupby(['col2']).agg():一次性對多個列做聚合操作
pd.pivot_table(df,index=['col2']):以col2列為索引建立資料透視表,預設計算方式為求均值
df.count()非nan的數量df.describe()一次性產生多個匯**計
df.min():最小值
df.max():最大值
df.idxmax(axis=0, skipna=true):返回含有最大值的index的series
df.idxmin(axis=0, skipna=true):返回含有最小值的index的series
df.quantile(axis=0)計算樣本的分位數
df.sum(axis=0, skipna=true, level=nan)返回乙個含有求和小計的series
df.mean(axis=0, skipna=true, level=nan)返回乙個含有平均值的series
df.median(axis=0, skipna=true, level=nan)返回乙個含有算術中位數的series
df.var(axis=0, skipna=true, level=nan)返回乙個方差的series
df.std(axis=0, skipna=true, level=nan)返回乙個標準差的series
df.cumsum(axis=0, skipna=true, level=nan)返回樣本的累計和
df.cummin(axis=0, skipna=true, level=nan)返回樣本的累計最大值
df.cummax(axis=0, skipna=true, level=nan)返回樣本的累計最小值
的apply 易混淆函式札記 apply系列函式
在r語言中,有些函式由於名字相似,或者功能相似,容易混淆。因此,我計畫記錄一些在r中易混淆的函式,相應的文章題目都是冠以易混淆函式札記。這是這個系列的第一篇文章。這篇文章中用的資料集是r中自帶的mtcars資料集,可以直接呼叫。由於該資料集列數較多,為了方便理解,我們只取其mpg,cyl,hp列,分...
apply實現繼承
學生類本來不具備任何方法,他就具備了 person類的sayhello方法和 所有屬性。人物件 function person name,age person.prototype 輸出列印物件 function print 學生物件 function student name,age,grade,s...
apply 使用技巧
主要是傳參的不同 function thisobj argarray call 方法 function call thisobj arg1 arg2 argn var max math.max.null array var min math.min.null array 因為我們只需要用這個方法幫我...