[Pandas入門シリーズ第5回] データ型と変換
はじめに
本記事は「Pythonでデータを分析するPandas入門」シリーズの第5回です.
本シリーズでは, Pythonのデータ分析ライブラリである Pandas を使って,「データを扱い,分析できる状態」になること を目標としています.
第4回では,欠損値の扱い方 を説明しました.
第5回では,不具合が発生しやすい, データ型と変換 を説明します.
私のPandasライブラリのバージョンは "2.3.3" です.
本シリーズの構成
シリーズ構成予定(全11記事)
- Pandasのインストール ~ 基本構造
- DataFrameの作成と基本操作
- データの抽出(
loc/iloc・条件フィルタリング) - 欠損値の処理
- データ型と変換(本記事)
- データの並び替えとランキング
- グループ化と集計
- データ結合(公開後にリンクを追加する予定)
- ピボットテーブルとクロス集計(公開後にリンクを追加する予定)
- 時系列データ処理(公開後にリンクを追加する予定)
- 可視化(公開後にリンクを追加する予定)
本シリーズのゴール
本シリーズでは,以下のポイントが実装できるようになることを目標としています.
- データの読み込み
- データの確認
- 前処理(欠損値・型変換など)
- データ抽出・加工
- データの集計・分析
- データの可視化
データを分析して,可視化できるようになること.
本記事のゴール
本記事では,以下のポイントを理解することを目標としています.
- データ型を理解する
- データ型を確認できる
- データ型を変換できる
Pandasライブラリの読み込み
Pandasを使うためには,まずライブラリの読み込みから始めます.
import pandas as pd
Pandasライブラリを pd という名前として,扱えるようにしています.
以降では pd という名前を使っていきます.
使用するCSVファイルに関して
使用するCSVファイル(data.csv)の詳細は下記のとおりです.
名前,年齢,年収,入社日,部署
A,"25",300,2020-01-01,営業
B,"30",500,2019/05/10,開発
C,22,250,2021-03-15,営業
D,28,"400",2020-07-20,人事
E,35,600,2018-11-01,開発
F,26,320,2022/02/28,
G,31,520,2019-09-09,開発
H,29,,2020-12-01,人事
I,24,280,2021/06/18,営業
J,33,550,,開発
K,27,350,2020-04-01,営業
L,36,620,2017/08/30,人事
以降では,上記CSVファイルを使用していきます.
データ型とは?
データ型とは, データの種類(数値・文字列・日付など) を指します.
主なデータ型を下表にまとめます.
| データ型 | 内容 |
|---|---|
| int64 | 整数 |
| float64 | 小数 |
| object | 文字列 |
| datetime64 | 日付 |
データ型の確認
データ型の確認方法を説明します.
# CSVファイルの読み込み
df = pd.read_csv("data.csv")
# データ型の確認
print(f"df.dtypes =\n{df.dtypes}")
# df.dtypes =
# 名前 object
# 年齢 int64
# 年収 float64
# 入社日 object
# 部署 object
# dtype: object
print(f"df =\n{df}")
# df =
# 名前 年齢 年収 入社日 部署
# 0 A 25 300.0 2020-01-01 営業
# 1 B 30 500.0 2019/05/10 開発
# 2 C 22 250.0 2021-03-15 営業
# 3 D 28 400.0 2020-07-20 人事
# 4 E 35 600.0 2018-11-01 開発
# 5 F 26 320.0 2022/02/28 NaN
# 6 G 31 520.0 2019-09-09 開発
# 7 H 29 NaN 2020-12-01 人事
# 8 I 24 280.0 2021/06/18 営業
# 9 J 33 550.0 NaN 開発
# 10 K 27 350.0 2020-04-01 営業
# 11 L 36 620.0 2017/08/30 人事
データ型を確認する際には,DataFrameオブジェクトのdtypesプロパティを使用します.
DataFrameオブジェクトのdtypesプロパティの戻り値を下表にまとめます.
| 意味 | データ型 | 備考 |
|---|---|---|
| DataFrameのデータ型 | pandas.Series | 各列のデータ型を返す |
df.dtypesプロパティの詳細は,下記の公式リファレンスを参照ください.
データ型の変換
データ型の変換方法を説明します.
数値型への型変換
データ型を数値型へ型変換する方法を説明します.
# CSVファイルの読み込み
df = pd.read_csv("data.csv")
# 年収を数値型へ型変換 (変換できない値はNaNになる)
df["年収"] = pd.to_numeric(df["年収"], errors="coerce")
print(f"df.dtypes =\n{df.dtypes}")
# df.dtypes =
# 名前 object
# 年齢 int64
# 年収 float64
# 入社日 object
# 部署 object
# dtype: object
print(f"df =\n{df}")
# df =
# 名前 年齢 年収 入社日 部署
# 0 A 25 300.0 2020-01-01 営業
# 1 B 30 500.0 2019/05/10 開発
# 2 C 22 250.0 2021-03-15 営業
# 3 D 28 400.0 2020-07-20 人事
# 4 E 35 600.0 2018-11-01 開発
# 5 F 26 320.0 2022/02/28 NaN
# 6 G 31 520.0 2019-09-09 開発
# 7 H 29 NaN 2020-12-01 人事
# 8 I 24 280.0 2021/06/18 営業
# 9 J 33 550.0 NaN 開発
# 10 K 27 350.0 2020-04-01 営業
# 11 L 36 620.0 2017/08/30 人事
Pandasライブラリのto_numeric()メソッドの詳細は,下記の公式リファレンスを参照ください.
日付型への型変換
データ型を日付型へ型変換する方法を説明します.
# CSVファイルの読み込み
df = pd.read_csv("data.csv")
# 入社日を日付型へ型変換 (変換できない値はNaTになる)
df["入社日"] = pd.to_datetime(df["入社日"], errors="coerce")
print(f"df.dtypes =\n{df.dtypes}")
# df.dtypes =
# 名前 object
# 年齢 int64
# 年収 float64
# 入社日 datetime64[ns]
# 部署 object
# dtype: object
print(f"df =\n{df}")
# df =
# 名前 年齢 年収 入社日 部署
# 0 A 25 300.0 2020-01-01 営業
# 1 B 30 500.0 NaT 開発
# 2 C 22 250.0 2021-03-15 営業
# 3 D 28 400.0 2020-07-20 人事
# 4 E 35 600.0 2018-11-01 開発
# 5 F 26 320.0 NaT NaN
# 6 G 31 520.0 2019-09-09 開発
# 7 H 29 NaN 2020-12-01 人事
# 8 I 24 280.0 NaT 営業
# 9 J 33 550.0 NaT 開発
# 10 K 27 350.0 2020-04-01 営業
# 11 L 36 620.0 NaT 人事
Pandasライブラリのto_datetime()メソッドの詳細は,下記の公式リファレンスを参照ください.
終わりに
本記事では,Pandasに関する以下の内容を説明しました.
- データ型の確認方法
- データ型を数値型へ型変換
- データ型を日付型へ型変換
次回予告
第6回では,「データの並び替えとランキング」について説明します.
参考文献
本記事を作成するに当たって参考にしたサイトをまとめました.
Discussion