關鍵詞和導入
在這個速查卡中,我們會用到一下縮寫:
df | 二維的表格型數據結構DataFrame |
s | 一維數組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,字符串或文件,並將表提取到數據框列表 |
pd.read_clipboard() | 獲取剪貼板的內容並將其傳遞給read_table() |
pd.DataFrame(dict) | 從字典、列名稱鍵、數據列表的值導入 |
輸出數據
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) | 從可迭代的my_list創建一維數組 |
df.index=pd.date_range('1900/1/30', periods=df.shape[0]) | 添加日期索引 |
查看/檢查數據
df.head(n) | 數據框的前n行 |
df.tail(n) | 數據框的后n行 |
df.shape() | 行數和列數 |
df.info() | 索引,數據類型和內存信息 |
df.describe() | 數值列的匯總統計信息 |
s.value_counts(dropna=False) | 查看唯一值和計數 |
df.apply(pd.Series.value_counts) | 所有列的唯一值和計數 |
選擇
df[col] | 返回一維數組col的列 |
df[[col1, col2]] | 作為新的數據框返回列 |
s.iloc[0] | 按位置選擇 |
s.loc['index_one'] | 按索引選擇 |
df.iloc[0,:] | 第一行 |
df.iloc[0,0] | 第一列的第一個元素 |
數據清洗
df.columns = ['a','b','c'] | 重命名列 |
pd.isnull() | 檢查空值,返回邏輯數組 |
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') | 將所有等於1的值替換為'one' |
s.replace([1,3],['one','three']) | 將所有1替換為'one',將3替換為'three' |
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) & (1.7)] | 0.7> col> 0.5的行 |
df.sort_values(col1) | 將col1按升序對值排序 |
df.sort_values(col2,ascending=False) | 將col2按降序對值排序 |
df.sort_values([col1,ascending=[True,False]) | 將col1按升序排序,然后按降序排序col2 |
df.groupby(col) | 從一列返回一組對象的值 |
df.groupby([col1,col2]) | 從多列返回一組對象的值 |
df.groupby(col1)[col2] | 返回col2中的值的平均值,按col1中的值分組(平均值可以用統計部分中的幾乎任何函數替換) |
df.pivot_table(index=col1,values=[col2,col3],aggfunc=max) | 創建一個數據透視表,按col1分組並計算col2和col3的平均值 |
df.groupby(col1).agg(np.mean) | 查找每個唯一col1組的所有列的平均值 |
data.apply(np.mean) | 在每個列上應用函數 |
data.apply(np.max,axis=1) | 在每行上應用一個函數 |
加入/合並
df1.append(df2) | 將df1中的行添加到df2的末尾(列數應該相同) |
df.concat([df1, df2],axis=1) | 將df1中的列添加到df2的末尾(行數應該相同) |
df1.join(df2,on=col1,how='inner') | SQL類型的將df1中的列與df2上的列連接,其中col的行具有相同的值。 可以是“左”,“右”,“外”,“內”連接 |
統計
以下這些都可以應用於一個數組。
df.describe() | 數值列的匯總統計信息 |
df.mean() | 返回所有列的平均值 |
df.corr() | 查找數據框中的列之間的相關性 |
df.count() | 計算每個數據框的列中的非空值的數量 |
df.max() | 查找每個列中的最大值 |
df.min() | 查找每列中的最小值 |
df.median() | 查找每列的中值 |
df.std() | 查找每個列的標准差 |