DataFrame基本操作
使用pandas讀取CSV
import pandas as pd
df = pd.read_csv('food_info.csv')
df.head(5)
df 即 pandas 的 DataFrame 對象,在Jupyter中的運行結果如下:
DataFrame的常用操作
查看DataFrame的shape:
獲取表中所有數值類型的常用統計指標:
DataFrame的列索引
還可以獲取將列索引轉化爲 list
列索引對象可迭代:遍歷列索引對象,獲取所有以 g 爲單位的食材
gram_food = []
for c in df.columns:
if c.endswith("(g)"):
gram_food.append(c)
df[gram_food].head()
運行結果:
DataFrame列的運算
將 Protein_(g) 列的所有值乘以2:
將 Lipid_Tot_(g) 列的所有值乘以0.75:
向DataFrame中添加一個新的列 initial_rating :
df["initial_rating"] = (df["Protein_(g)"] * 2) + (df["Lipid_Tot_(g)"] * 0.75)
df.loc[:2][["Protein_(g)", "Lipid_Tot_(g)", "initial_rating"]]
運行結果:
看看新增加列對的最大值:
DataFrame關於行的操作
使用切片操作,選取特定的行:
使用 df[start: stop: step] 而不是 df.loc[start: stop: step] 時,將不包含stop行:
推薦在選取指定行時,使用 loc 的形式。如果是使用列表選取指定行時,必須添加loc,否則會報錯:
DataFrame排序操作
依據某一列的值進行排序:
# inplace=True對DataFrame就地修改,而不是返回一個新的DataFrame
df.sort_values("initial_rating", inplace=True)
df[["Protein_(g)", "Lipid_Tot_(g)", "initial_rating"]].tail(3)
上述示例爲升序排列,下面我們指定爲降序:
df.sort_values("initial_rating", inplace=True, ascending=False)
df[["Protein_(g)", "Lipid_Tot_(g)", "initial_rating"]].head(3)
inplace參數的默認值爲 False ,即返回一個已排序的新的DataFrame,原DataFrame不會發生改變。使用sort_index()可以根據索引重新排序 DataFrame,同理,也可以指定 inplace 參數,表示是否就地修改:
方法總結
DataFrame的操作
方法 | 說明 |
---|---|
df = pandas.read_csv(‘csv文件’) | 讀取CSV文件爲Pandas的DataFrame對象 |
df.head(n) | 返回DataFrame的頭n行數據 |
df.columns | 返回列名組成的Index對象 |
df.shape | 返回DataFrame的形狀(row * colus) |
df.describe() | 以DataFrame的形式返回各數值列的統計信息 |
DataFrame行的操作
方法 | 說明 |
---|---|
df.loc[n] | 第n+1行記錄以Series形式返回 |
df.loc[start: stop: step] | 使用切片選取DataFrame的部分記錄,包含stop |
df[start: stop: step] | 使用切片選取DataFrame的部分記錄,不包含stop |
df.loc[[num1, num2, num3]] | 使用列表選取DataFrame的部分記錄 |
DataFrame列的操作
方法 | 說明 |
---|---|
df[‘列名’] | 獲取DataFrame的某一列,類型爲Series |
df[‘列名’].name | 獲取當前列的列名 |
df[‘列名’].dtype | 獲取當前列的數據類型 |
df[[‘列名1’,‘列名2’,…]] | 使用列表的形式選取指定的列 |
df.columns.tolist() | 將列名以列表形式返回 |
df[‘新列名’] = Series對象 | 在DataFrame中增加一列 |
df[‘列名’].max() | 求該列的最大值 |
指定列爲依據進行排序
方法 | 說明 |
---|---|
df**.sort_values(**by, axis=0, ascending=True, inplace=False) | 返回一個排序後的DataFrame,默認爲升序 |
df.sort_values(by, axis=0, ascending=False, inplace=True) | 就地降序排列,原DataFrame的順序將被改變 |