乾貨 利用pandas處理Excel資料

2021-10-19 04:01:02 字數 3845 閱讀 8587

新建乙個excel**(table1.csv)用於案例講解:

df = pd.read_excel('table1.xlsx') # 相對路徑

# df = pd.read_excel(r'e:\anaconda\hc\datascience\table1.csv') # 絕對路徑

顯示資料的行與列數

df.shape

(6, 5)

顯示資料格式dtpyes

df.dtypes

name      object

age        int64

***        int64

class      int64

score    float64

dtype: object

顯示列名

df.columns

index(['name', 'age', '***', 'class', 'score'], dtype='object')

顯示前資料前2行

顯示資料後3行

顯示資料唯一值(unique函式)

df['score'].unique()

array([ 80.,  90., 100.,  nan])

對第幾行資料不讀取

# 沒有讀取第2行

對缺失值進行識別

# 所有缺失值顯示為true

刪除空值(dropna函式)

填充空值(fillna函式)

用均值對空值進行填充

df4 = df['score'].fillna(df['score'].mean())

0     80.0

1     90.0

2    100.0

3     90.0

4     88.0

5     80.0

name: score, dtype: float64

更改資料格式

df1['score'].astype('int64')

0     80

1     90

2    100

3     90

5     80

name: score, dtype: int64

(注:如果存在空值,更改資料格式會報錯!)

更改列名

對列表內的值進行替換(replace函式)

df6 = df['name'].replace('bob', 'bob')

0     tom

1    jack

2    alan

3    tony

4     tim

5     bob

name: name, dtype: object

對資料進行排序

(注:預設公升序,且空值在後面)

資料分組

①單一條件分組

# 如果score列的值》=85,score列顯示high,否則顯示low

# group列為增加列

②多個條件分組

# 利用loc函式,進行多列查詢

# sign為增加列

df.loc[(df['***'] == 1) & (df['age']>= 19), 'sign']=1

按標籤提取(loc函式)

df.loc[0:3]
按位置進行提取(iloc函式)

①按區域提取

df.iloc[:4, :5]
②按位置提取

#[0, 2, 5] 代表指定的行,[0, 1, 5] 代表指定的列

df.iloc[[0, 2, 5],[0, 1, 5]]

按條件提取(isin與loc函式)

①用isin函式進行判斷

# 判斷***是否為1

df['***'].isin([1])

0     true

1     true

2     true

3    false

4    false

5     true

name: ***, dtype: bool

②用loc函式進行判斷

# ***為1,分數大於85

df1.loc[(df1['***'] == 1) & (df1['score'] > '85'), ['name','age','class']]

③先判斷結果,將結果為true的提取

# 先判斷score列裡是否包含80和90,然後將復合條件的資料提取出來。

df.loc[df['score'].isin(['80','90'])]

乾貨 pandas常用技巧筆記

下面以 注釋的形式進行記錄 為模組新增別名 import pandas as pd 建立dataframe df pd.read csv rfm trad flow.csv encoding gbk df pd.dataframe columns transid cumid time amount ...

pandas 時間處理

year month day 是 datetime 標準形式 可以用 datetime.dt.day 取到 day 如果是 datetime 相減,得到兩個時間差的天數,型別變為 timedelta 要用 dt.days 獲取天數 如果是一串數字表達的時間 沒有分隔符 可以用to datetime ...

pandas處理資料

pd.read csv path to file.txt header 0,names ab index 0 names columns這個可以不寫,制定索引列是第一列,這樣就沒有序號 np.tofile d python np.txt 類似於二維列表 充分利用map函式 df.a df.a.map...