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

    • PassengerId: 各乗客のID。

    • Survived: 乗客が生存したかどうかの表示。0は生存、1は死亡。

    • Pclass: 3つのチケットクラスのうちの1つ:クラス1、クラス2、クラス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行が表示されます。

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行を表示するには、必要な行数(この場合は8)を引数として指定して、head()メソッドを使用します。

代わりに最後の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を要求するときは、角かっこは使用しません! dtypesは、DataFrameおよびSeriesの属性です。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です)。一部の列には欠損値があり、non-null値が891未満です。

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

    • さまざまな列のデータ(文字、整数など)の種類は、dtypesをリストすることで要約されます。

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

覚えておいてください

  • さまざまなファイル形式またはデータソースからpandasにデータを取得することは、read_*関数でサポートされています。

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

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

ユーザーガイドへ

pandasとの間での入出力の可能性の完全な概要については、読み取り関数と書き込み関数に関するユーザーガイドのセクションを参照してください。