Python之Pandas使用系列(七):Pandas的常用操作方法彙總

Python之Pandas使用系列(七):Pandas的常用操作方法彙總

介紹

Pandas可以說是數據科學中最重要的Python軟件包。它不僅為您提供了許多使數據處理變得更容易的方法和功能,而且還針對速度進行了優化,與使用Python內置函數處理數字數據相比,它具有明顯的優勢。第一次學習 Pandas時會很難記住您需要的所有功能和方法,這裡將這種常用的一些操作方式彙總在一起,希望能有所幫助!

約定關鍵字和導入pandas包

在本文中,我們使用以下簡寫形式:

df 任何Pandas DataFrame對象
s 任何pandas Series對象

使用以下腳本導入:

import pandas as pd
import numpy as np

導入外部數據資源

pd.read_csv(filename) 從CSV文件讀取數據
pd.read_table(filename) 從分隔的文本文件(例如TSV)讀取數據pd.read_excel(filename) 從Excel文件讀取數據

pd.read_sql(query, connection_object) 從SQL表/數據庫中讀取數據pd.read_json(json_string) 從JSON格式的字符串,URL或文件中讀取數據pd.read_html(url) 解析html URL,字符串或文件,並將表提取到Dataframe列表pd.read_clipboard() 獲取剪貼板的內容並將其傳遞給read_table()pd.DataFrame(dict) 從字典中讀取數據,列名稱的keys,列表中數據的values

將Dataframe數據寫入外部數據源

df.to_csv(filename) 寫入CSV文件
df.to_excel(filename) 寫入Excel文件
df.to_sql(table_name, connection_object) 寫入SQL表
df.to_json(filename) 以JSON格式寫入文件

創建測試對象

對於測試代碼段很有用

pd.DataFrame(np.random.rand(20,5)) 5列20行的隨機浮動
pd.Series(my_list) 從列表創建序列
df.index = pd.date_range('1900/1/30', periods=df.shape[0]) 添加日期索引

查看/檢查數據

df.head(n) DataFrame的前n行
df.tail(n) DataFrame的最後n行df.shape 行數和列數
df.info() 索引,數據類型和內存信息df.describe() 數字列的摘要統計信息s.value_counts(dropna=False) 查看唯一值和計數

df.apply(pd.Series.value_counts) 所有列的唯一值和計數

選擇子集的操作

df[col] 返回帶有標籤col的列為Series
df[[col1, col2]] 返回列作為新的DataFrame
s.iloc[0] 按位置選擇
s.loc['index_one'] 按索引選擇
df.iloc[0,:] 第一行df.iloc[0,0] 第一列,第一行的一個元素

數據清理

df.columns = ['a','b','c'] 重命名列
pd.isnull() 檢查空值,返回Boolean 列表
pd.notnull() 對應 pd.isnull()
df.dropna() 刪除所有包含空值的行
df.dropna(axis=1) 刪除所有包含空值的列
df.dropna(axis=1,thresh=n) 刪除所有具有少於n個非空值的行
df.fillna(x) 將所有空值替換為x
s.fillna(s.mean()) 用均值替換所有空值
s.astype(float) 將序列的數據類型轉換為float
s.replace(1,'one') 用 'one' 替換所有value等於 '1' 的元素
s.replace([1,3],['one','three']) 用 'one' 替換所有value等於 '1' 的元素,用 'three' 替換所有value等於 '3 的元素
df.rename(columns=lambda x: x + 1) 列的重命名
df.rename(columns={'old_name': 'new_ name'}) 選擇性重命名df.set_index('column_one') 更改索引
df.rename(index=lambda x: x + 1) 重命名索引

篩選,排序和分組依據

df[df[col] > 0.5] 選擇所有 'col'列的值大於0.5的所有子集
df[(df[col] > 0.5) & (df[col] < 0.7)] 選擇所有 'col'列的值大於0.5或者'col'列的值小於0.7的所有子集
df.sort_values(col1) 按'col1' 列的升序對DataFrame進行排序df.sort_values(col2,ascending=False) 按'col1' 列的降序對DataFrame進行排序
df.sort_values([col1,col2],ascending=[True,False]) 按'col1' 升序排序,然後'col2' 按降序排序df.groupby(col) 按'col' 分組,並返回分組對象
df.groupby([col1,col2]) 按'col1' ,'col2'兩個列分組,並返回分組對象
df.groupby(col1)[col2] 按'col' 分組,並取出Dataframe中的'col2'列df.pivot_table(index=col1,values=[col2,col3],aggfunc=mean) 創建數據透視表,按'col1'分組,並計算的平均值'col2'和'col3'的均值(mean)
df.groupby(col1).agg(np.mean) 按'col1'分組,並得到所有列的平均值(mean)df.apply(np.mean) 在每列上應用 np.mean()函數
nf.apply(np.max,axis=1) 在每行上應用np.max()函數

追加與合併

df1.append(df2) 將df2的所有行添加到df1的末尾(各列應相同)
pd.concat([df1, df2],axis=1)。將df2的列添加df1的列的末尾(行應相同)df1.join(df2,on=col1,how='inner') 類似SQL樣式,將列df1與df2使用列'col1'做join的操作,通過 'how'關鍵字完成'left','right','outer','inner'的操作

統計函數

這些也都可以應用於序列(series)。

df.describe() 數字列的摘要統計信息
df.mean() 返回所有列的平均值
df.corr() 返回DataFrame中各列之間的相關性
df.count()。返回每個Dataframe列非空值的數量
df.max() 返回每列中的最高值
df.min() 返回每列中的最小值df.median() 返回每列的中位數
df.std() 返回每列的標準偏差

點擊關注,如果發現任何不正確的地方,或者想分享有關上述主題的更多信息,歡迎反饋。


分享到:


相關文章: