天天看點

小白學 Python 資料分析(9):Pandas (八)資料預處理(2)

小白學 Python 資料分析(9):Pandas (八)資料預處理(2)
人生苦短,我用 Python

前文傳送門:

小白學 Python 資料分析(1):資料分析基礎

小白學 Python 資料分析(2):Pandas (一)概述

小白學 Python 資料分析(3):Pandas (二)資料結構 Series

小白學 Python 資料分析(4):Pandas (三)資料結構 DataFrame

小白學 Python 資料分析(5):Pandas (四)基礎操作(1)檢視資料

小白學 Python 資料分析(6):Pandas (五)基礎操作(2)資料選擇

小白學 Python 資料分析(7):Pandas (六)資料導入

小白學 Python 資料分析(8):Pandas (七)資料預處理

引言

前一篇文章我們介紹了資料預進行中資料有問題的幾種情況以及一般處理辦法。

很經常,當我們拿到資料的時候,首先需要确定拿到的是正确類型的資料,如果資料類型不正确,一般通過資料類型的轉化

資料類型轉化

大家應該都知道 Excel 中資料類型比較多,常用的有文本、數字、貨币、時間、日期等等,在 Pandas 中,相對而言資料類型就少了很多,常用的有 int64 , float64 , object , datetime64 等等。

還是使用前面的示例,我們先看下目前資料表中的資料類型,這裡使用的

dtypes

,示例如下:

import pandas as pd

# 相對路徑
df = pd.read_excel("result_data.xlsx")
print(df)

# 輸出結果
    plantform  read_num  fans_num  rank_num  like_num         create_date
0      cnblog     215.0         0     118.0         0 2019-11-23 23:00:10
1      cnblog     215.0         0     118.0         0 2019-11-23 23:00:10
2      juejin       NaN         0      -2.0         1 2019-11-23 23:00:03
3        csdn    1652.0        69       0.0        24 2019-11-23 23:00:02
4      cnblog     650.0         3       NaN         0 2019-11-22 23:00:15
..        ...       ...       ...       ...       ...                 ...
404    juejin     212.0         0      -1.0         2 2020-02-20 23:00:02
405      csdn    1602.0         1       0.0         1 2020-02-20 23:00:01
406    cnblog      19.0         0      41.0         0 2020-02-21 23:00:05
407    juejin     125.0         1      -4.0         0 2020-02-21 23:00:02
408      csdn    1475.0         8       0.0         3 2020-02-21 23:00:02

print(df.dtypes)

# 輸出結果
plantform              object
read_num              float64
fans_num                int64
rank_num              float64
like_num                int64
create_date    datetime64[ns]
dtype: object
           

當然,我們如果想單獨知道某一列的資料類型,也可以這麼用:

import pandas as pd

# 相對路徑
df = pd.read_excel("result_data.xlsx")
print(df['read_num'].dtypes)

# 輸出結果
float64
           

當我們需要轉換資料類型的時候,可以使用

astype()

這個方法,在使用的時候講需要轉化的目标類型寫在

astype()

後面括号裡即可:

import pandas as pd

# 相對路徑
df = pd.read_excel("result_data.xlsx")
print(df['fans_num'].astype('float64'))

# 輸出結果
0       0.0
1       0.0
2       0.0
3      69.0
4       3.0
       ... 
404     0.0
405     1.0
406     0.0
407     1.0
408     8.0
Name: fans_num, Length: 409, dtype: float64
           

添加索引

有些時候,我們拿到的資料表是沒有索引的,如果沒有索引, Pandas 會預設的為我們添加從 0 開始的自然數作為行索引。而列索引會預設取第一行。比如我們建立了一個沒有表頭的 Excel ,如下:

小白學 Python 資料分析(9):Pandas (八)資料預處理(2)

沒有表頭這樣的資料看起來很難懂,我們先導入到 Pandas 中看下效果:

import pandas as pd

df1 = pd.read_excel("demo.xlsx")
print(df1)

# 輸出結果
   A1  1001  小紅  1000
0  A2  1002  小王  2000
1  A3  1003  小明  3000
2  A4  1004  小朱  4000
3  A5  1005  小黑  5000
           

這時,我們想給這個資料表加上列索引,這裡可以使用 columns ,如下:

import pandas as pd

df1 = pd.read_excel("demo.xlsx")
df1.columns = ['編号', '序号', '姓名', '消費金額']
print(df1)

# 輸出結果
   編号    序号  姓名  消費金額
0  A2  1002  小王  2000
1  A3  1003  小明  3000
2  A4  1004  小朱  4000
3  A5  1005  小黑  5000
           

現在我們有了列索引,但是如果這時我并不想用自動生成的自然數作為行索引,想替換成資料表中的序号,可以怎麼做呢?

這裡需要使用到的是

set_index()

這個方法,在括号中指明需要使用的列名即可:

import pandas as pd

df1 = pd.read_excel("demo.xlsx")
print(df1.set_index('編号'))

# 輸出結果
      序号  姓名  消費金額
編号                
A2  1002  小王  2000
A3  1003  小明  3000
A4  1004  小朱  4000
A5  1005  小黑  5000
           

本篇的内容就到這裡結束了,今天的内容有點短,溜了溜了~~

示例代碼

老規矩,所有的示例代碼都會上傳至代碼管理倉庫 Github 和 Gitee 上,友善大家取用。

示例代碼-Github

示例代碼-Gitee

掃描二維碼關注「極客挖掘機」公衆号!

作者:極客挖掘機

定期發表作者的思考:技術、産品、營運、自我提升等。

本文版權歸作者極客挖掘機和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

如果您覺得作者的文章對您有幫助,就來作者個人小站逛逛吧:

極客挖掘機