天天看點

pandas DataFrame操作(1)pandas DataFrame操作(1)

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]

    : 直接通過列名稱清單來選擇多列
  • f.select_dtypes(include=['int'])

    : 選擇資料類型是int的列
  • df.filter(like='str', regex='re')

    : 此方法隻會檢查所有的column names,而不會檢查确切的資料
  • df[new_col_order_list]

    : 當要對df中的列組織順序時,可以直接用想要的列名序來index
  • (df + .00501)// .01

    : 可以将df中的資料全都四舍五入成1位小數

df.loc[] 使用

  • df.loc['i1']

    : 傳回一個Series,包含i1行的資料
  • df.loc[['i1', 'i2']]

    : 傳回一個df,包含i1 i2兩行資料
  • df.loc['i1', 'c1']

    : 傳回對應位置的資料
  • df.loc['i1':'12', 'c1':'c2']

    : 傳回一個df,包含對應行和列的資料
  • df.loc[df['c1'] > 1]

    : 傳回一個df,包含c1列中數值大于1的所有行
  • df.loc[df['c1'] > 1, ['c2']]

    : 傳回一個df,包含上面傳回df中的c2列
  • df.loc[lambda df: df['c1'] == 1]

    : 傳回一個df,包含c1列中數值等于1的所有行
  • df.loc[['i1', 'i2'], ['c1']] = 1

    : 将df中對應位置的資料改為1
  • df.loc['i1'] = 1

    : 将對應行的資料全部改為1
  • df.loc[:, 'c1'] = 1

    :将對應列的資料全部改為1
  • df.loc[df['c1'] > 1] = 0

    : 将對應列資料大于1的所有行的所有資料改為0
  • f.loc[1:9]

    : 傳回1-9行的資料

df.iloc[] 使用

  • df.loc[]

    一樣的功能,隻是完全基于數字進行索引,例如

    df.iloc[1:3, 1:3]

    就相當于

    df.loc['i1':'i1', 'c1':'c3']

    ,其他類似
  • df.loc[]

    也能完全基于數字進行索引
  • df.at['i1', 'c1']

    : 傳回對應位置的值
  • df.at['i1', 'c1'] = 1

    : 将對應位置的值設為1