In [1]: import pandas as pd
このチュートリアルで使用するデータ
  • このチュートリアルでは、CSV として保存されているタイタニック号のデータセットを使用します。データは次のデータ列で構成されています。

    • PassengerId: 各乗客のID。

    • Survived: 乗客が生存したかどうかを示す。生存した場合は 0、生存しなかった場合は 1

    • Pclass: 3つのチケットクラスのうちの1つ: Class 1、Class 2、Class 3

    • Name: 乗客の名前。

    • Sex: 乗客の性別。

    • Age: 乗客の年齢 (年単位)。

    • SibSp: 乗船していた兄弟姉妹または配偶者の数。

    • Parch: 乗船していた両親または子供の数。

    • Ticket: 乗客のチケット番号。

    • Fare: 運賃を示す。

    • Cabin: 乗客の客室番号。

    • Embarked: 乗船港。

    生データへ

表形式のデータを読み書きするにはどうすればよいですか?#

../../_images/02_io_readwrite.svg
  • CSVファイルで利用可能なタイタニック号の乗客データを分析したいです。

    In [2]: titanic = pd.read_csv("data/titanic.csv")
    

    pandasは、CSVファイルとして保存されたデータをpandas DataFrame に読み込むための read_csv() 関数を提供しています。pandasは多くの異なるファイル形式やデータソース (csv, excel, sql, json, parquet, …) をそのままサポートしており、それぞれ read_* というプレフィックスが付いています。

データを読み込んだ後は、必ずデータをチェックするようにしてください。DataFrame を表示すると、デフォルトで最初の5行と最後の5行が表示されます。

In [3]: titanic
Out[3]: 
     PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0              1         0       3  ...   7.2500   NaN         S
1              2         1       1  ...  71.2833   C85         C
2              3         1       3  ...   7.9250   NaN         S
3              4         1       1  ...  53.1000  C123         S
4              5         0       3  ...   8.0500   NaN         S
..           ...       ...     ...  ...      ...   ...       ...
886          887         0       2  ...  13.0000   NaN         S
887          888         1       1  ...  30.0000   B42         S
888          889         0       3  ...  23.4500   NaN         S
889          890         1       1  ...  30.0000  C148         C
890          891         0       3  ...   7.7500   NaN         Q

[891 rows x 12 columns]
  • pandas DataFrame の最初の8行を見たいです。

    In [4]: titanic.head(8)
    Out[4]: 
       PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
    0            1         0       3  ...   7.2500   NaN         S
    1            2         1       1  ...  71.2833   C85         C
    2            3         1       3  ...   7.9250   NaN         S
    3            4         1       1  ...  53.1000  C123         S
    4            5         0       3  ...   8.0500   NaN         S
    5            6         0       3  ...   8.4583   NaN         Q
    6            7         0       1  ...  51.8625   E46         S
    7            8         0       3  ...  21.0750   NaN         S
    
    [8 rows x 12 columns]
    

    DataFrame の最初のN行を見るには、head() メソッドを引数として必要な行数 (この場合は8) を指定して使用します。

代わりに最後のN行に興味がありますか?pandasは tail() メソッドも提供しています。例えば、titanic.tail(10) はDataFrameの最後の10行を返します。

pandasが各列のデータ型をどのように解釈したかを確認するには、pandasの dtypes 属性を要求します。

In [5]: titanic.dtypes
Out[5]: 
PassengerId      int64
Survived         int64
Pclass           int64
Name            object
Sex             object
Age            float64
SibSp            int64
Parch            int64
Ticket          object
Fare           float64
Cabin           object
Embarked        object
dtype: object

各列について、使用されているデータ型が列挙されています。この DataFrame のデータ型は整数 (int64)、浮動小数点数 (float64)、文字列 (object) です。

dtypes を要求するときは、かっこは使用しません!dtypesDataFrameSeries の属性です。DataFrame または Series の属性にはかっこは必要ありません。属性は DataFrame/Series の特性を表しますが、メソッド (かっこが必要) は 最初のチュートリアル で紹介したように DataFrame/Series に対して何かを *実行します*。

  • 同僚がタイタニック号のデータをスプレッドシートとして要求しました。

    In [6]: titanic.to_excel("titanic.xlsx", sheet_name="passengers", index=False)
    

    read_* 関数はデータをpandasに読み込むために使用されますが、to_* メソッドはデータを保存するために使用されます。to_excel() メソッドはデータをExcelファイルとして保存します。ここでの例では、sheet_name はデフォルトの Sheet1 の代わりに passengers と名付けられています。index=False を設定することで、行インデックスラベルはスプレッドシートに保存されません。

対応する読み込み関数 read_excel() はデータを DataFrame に再読み込みします。

In [7]: titanic = pd.read_excel("titanic.xlsx", sheet_name="passengers")
In [8]: titanic.head()
Out[8]: 
   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
2            3         1       3  ...   7.9250   NaN         S
3            4         1       1  ...  53.1000  C123         S
4            5         0       3  ...   8.0500   NaN         S

[5 rows x 12 columns]
  • DataFrame の技術的な概要に興味があります。

    In [9]: titanic.info()
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 891 entries, 0 to 890
    Data columns (total 12 columns):
     #   Column       Non-Null Count  Dtype  
    ---  ------       --------------  -----  
     0   PassengerId  891 non-null    int64  
     1   Survived     891 non-null    int64  
     2   Pclass       891 non-null    int64  
     3   Name         891 non-null    object 
     4   Sex          891 non-null    object 
     5   Age          714 non-null    float64
     6   SibSp        891 non-null    int64  
     7   Parch        891 non-null    int64  
     8   Ticket       891 non-null    object 
     9   Fare         891 non-null    float64
     10  Cabin        204 non-null    object 
     11  Embarked     889 non-null    object 
    dtypes: float64(2), int64(5), object(5)
    memory usage: 83.7+ KB
    

    info() メソッドは DataFrame に関する技術情報を提供しますので、出力をより詳細に説明しましょう。

    • 確かに DataFrame です。

    • 891個のエントリ、つまり891行があります。

    • 各行には、0から890までの値を持つ行ラベル (別名 index) があります。

    • このテーブルには12個の列があります。ほとんどの列は各行の値を持っています (891個すべての値が non-null です)。一部の列には欠損値があり、891個より少ない non-null 値しかありません。

    • NameSexCabinEmbarked はテキストデータ (文字列、別名 object) で構成されています。その他の列は数値データで、その一部は整数 (別名 integer) であり、その他は実数 (別名 float) です。

    • 異なる列のデータの種類 (文字、整数など) は、dtypes をリストアップすることでまとめられます。

    • DataFrameを保持するために使用されるおおよそのRAM量も提供されます。

覚えておいてください

  • 多くの異なるファイル形式やデータソースからpandasにデータを取り込むことは、read_* 関数によってサポートされています。

  • pandasからデータをエクスポートすることは、異なる to_* メソッドによって提供されます。

  • head/tail/info メソッドと dtypes 属性は、最初の確認に便利です。

ユーザーガイドへ

pandasとの入出力の可能性の完全な概要については、リーダーおよびライター関数に関するユーザーガイドのセクションを参照してください。