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: 出航港。
表形式データの読み書きはどうすればよいですか?#
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未満です。列
Name
、Sex
、Cabin
、およびEmbarked
は、テキストデータ(文字列、別名object
)で構成されています。他の列は数値データであり、その一部は整数(別名integer
)であり、その他は実数(別名float
)です。さまざまな列のデータ(文字、整数など)の種類は、
dtypes
をリストすることで要約されます。DataFrameを保持するために使用されるRAMの概算量も提供されます。
覚えておいてください
さまざまなファイル形式またはデータソースからpandasにデータを取得することは、
read_*
関数でサポートされています。pandasからデータをエクスポートすることは、さまざまな
to_*
メソッドによって提供されます。head
/tail
/info
メソッドとdtypes
属性は、最初の確認に便利です。
pandasとの間での入出力の可能性の完全な概要については、読み取り関数と書き込み関数に関するユーザーガイドのセクションを参照してください。