pandas DataFrame操作(1)
導入庫
import pandas as pd
import numpy as np
建構DataFrame
tuples = [('a', 'v1'), ('a', 'v2'), ('b', 'v1'), ('b', 'v2')]
index = pd.MultiIndex.from_tuples(tuples)
columns = ['c1', 'c2']
values = np.arange(8).reshape(4, 2)
df = pd.DataFrame(values, columns=columns, index=index)
df
輸出結果:
c1 c2
a v1 0 1
v2 2 3
b v1 4 5
v2 6 7
讀取csv或xlsx檔案建立DataFrame
# 讀取csv建立DataFrame
df = pd.read_csv(csv_file_path)
# 讀取xlsx建立DataFrame
df = pd.read_excel(xlsx_file_path)
選擇多列
-
: 直接通過列名稱清單來選擇多列df[col_names_list]
-
: 選擇資料類型是int的列f.select_dtypes(include=['int'])
-
: 此方法隻會檢查所有的column names,而不會檢查确切的資料df.filter(like='str', regex='re')
-
: 當要對df中的列組織順序時,可以直接用想要的列名序來indexdf[new_col_order_list]
-
: 可以将df中的資料全都四舍五入成1位小數(df + .00501)// .01
df.loc[] 使用
-
: 傳回一個Series,包含i1行的資料df.loc['i1']
-
: 傳回一個df,包含i1 i2兩行資料df.loc[['i1', 'i2']]
-
: 傳回對應位置的資料df.loc['i1', 'c1']
-
: 傳回一個df,包含對應行和列的資料df.loc['i1':'12', 'c1':'c2']
-
: 傳回一個df,包含c1列中數值大于1的所有行df.loc[df['c1'] > 1]
-
: 傳回一個df,包含上面傳回df中的c2列df.loc[df['c1'] > 1, ['c2']]
-
: 傳回一個df,包含c1列中數值等于1的所有行df.loc[lambda df: df['c1'] == 1]
-
: 将df中對應位置的資料改為1df.loc[['i1', 'i2'], ['c1']] = 1
-
: 将對應行的資料全部改為1df.loc['i1'] = 1
-
:将對應列的資料全部改為1df.loc[:, 'c1'] = 1
-
: 将對應列資料大于1的所有行的所有資料改為0df.loc[df['c1'] > 1] = 0
-
: 傳回1-9行的資料f.loc[1:9]
df.iloc[] 使用
- 和
一樣的功能,隻是完全基于數字進行索引,例如df.loc[]
就相當于df.iloc[1:3, 1:3]
,其他類似df.loc['i1':'i1', 'c1':'c3']
-
也能完全基于數字進行索引df.loc[]
-
: 傳回對應位置的值df.at['i1', 'c1']
-
: 将對應位置的值設為1df.at['i1', 'c1'] = 1