【Python】pandasデータフレームに型指定をしてデータを読み込む方法

はじめに

Pythonのデータ分析ライブラリであるpandasを使って、CSVファイルを読み込む際には、データの型(int, float, strなど)を自動的に判定して読み込むことができます。しかし、大量のデータを扱う場合、自動的に判定された型が正しくない場合があります。そういった場合には、明示的にデータ型を指定する必要があります。

pandasの基本的な使い方

pandasは、データフレーム(DataFrame)とシリーズ(Series)という二つのオブジェクトを提供しています。DataFrameは、テーブルのように複数の列を持ったデータ構造であり、Seriesは、1次元のデータ構造であり、インデックスと値を持っています。

まずは、pandasを使ってDataFrameを作成する方法を見ていきましょう。

import pandas as pd
import numpy as np
# DataFrameの作成
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'city': ['Tokyo', 'Osaka', 'Nagoya', 'Fukuoka'],
    'job': ['engineer', 'teacher', 'doctor', 'programmer']
})
# DataFrameの表示
print(df)

上記のコードを実行すると、以下のようにDataFrameが表示されます。

       name  age     city         job
0     Alice   25    Tokyo    engineer
1       Bob   30    Osaka     teacher
2   Charlie   35   Nagoya      doctor
3     David   40  Fukuoka  programmer

データ型指定の重要性

CSVファイルを読み込む際に、データの型を明示的に指定することは、以下のようなメリットがあります。

    • 自動的に判定された型が正しくない場合でも、正しい型で読み込むことができる。
      • データフレームのメモリ使用量を削減することができる。

    データの読み込み速度を向上させることができる。

    CSVファイルの読み込み時に型指定をする方法

    pandasでは、read_csv関数を使ってCSVファイルを読み込むことができます。このread_csv関数には、dtype引数を指定することで、列ごとにデータ型を指定することができます。

    import pandas as pd
    
    # CSVファイルの読み込み
    df = pd.read_csv('sample.csv', dtype={'id': int, 'name': str, 'age': float, 'gender': 'category'})
    
    # DataFrameの表示
    print(df)
    

    上記の例では、id列にはint型、name列にはstr型、age列にはfloat型、gender列にはcategory型を指定しています。category型は、カテゴリカル変数を扱うためのデータ型であり、独立した値がある場合に使用することができます。category型を使用することで、メモリ使用量を削減することができます。

    既存のデータフレームで型指定を変更する方法

    既存のデータフレームで型指定を変更する場合には、astypeメソッドを使って、列ごとにデータ型を変更することができます。

    import pandas as pd
    
    # DataFrameの作成
    df = pd.DataFrame({
        'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'city': ['Tokyo', 'Osaka', 'Nagoya', 'Fukuoka'],
        'job': ['engineer', 'teacher', 'doctor', 'programmer']
    })
    
    # age列のデータ型をfloatからintに変更する
    df['age'] = df['age'].astype(int)
    
    # DataFrameの表示
    print(df)
    

    上記の例では、age列のデータ型をfloatからintに変更しています。

    実践例:具体的なデータを使った型指定の読み込み手順

    ここでは、実際にCSVファイルを読み込む際に、型指定をする手順を示します。

    まずは、以下のようなsample.csvファイルを作成しましょう。

    id,name,age,gender
    1,Alice,25.0,Female
    2,Bob,30.0,Male
    3,Charlie,35.0,Male
    4,David,40.0,Male
    

    次に、以下のようなコードを実行して、CSVファイルを読み込みます。

    import pandas as pd
    
    # CSVファイルの読み込み
    df = pd.read_csv('sample.csv', dtype={'id': int, 'name': str, 'age': float, 'gender': 'category'})
    
    # DataFrameの表示
    print(df)
    
    # データ型の確認
    print(df.dtypes)
    

    上記のコードを実行すると、以下のようにDataFrameが表示されます。

       id     name   age  gender
    0   1    Alice  25.0  Female
    1   2      Bob  30.0    Male
    2   3  Charlie  35.0    Male
    3   4    David  40.0    Male
    

    また、dtypes属性を使うことで、列ごとのデータ型を確認することができます。

    id          int32
    name       object
    age       float64
    gender    category
    dtype: object
    

    まとめ

    pandasを使って、CSVファイルを読み込む際には、データの型を明示的に指定することで、自動的に判定された型が正しくない場合でも、正しい型で読み込むことができます。また、データフレームのメモリ使用量を削減することや、データの読み込み速度を向上させることができます。型指定の方法として、read_csv関数のdtype引数を使う方法や、astypeメソッドを使う方法があります。具体的なデータを使って、型指定の読み込み手順を示しました。