In [1]: import pandas as pd
- タイタニック号のデータ
このチュートリアルでは、CSV として保存されているタイタニック号のデータセットを使用します。データは次のデータ列で構成されています。
PassengerId: 各乗客のID。
Survived: 乗客が生存したかどうかを示す。生存した場合は
0、生存しなかった場合は1。Pclass: 3つのチケットクラスのうちの1つ: Class
1、Class2、Class3。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行と最後の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 を要求するときは、かっこは使用しません!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です)。一部の列には欠損値があり、891個より少ないnon-null値しかありません。列
Name、Sex、Cabin、Embarkedはテキストデータ (文字列、別名object) で構成されています。その他の列は数値データで、その一部は整数 (別名integer) であり、その他は実数 (別名float) です。異なる列のデータの種類 (文字、整数など) は、
dtypesをリストアップすることでまとめられます。DataFrameを保持するために使用されるおおよそのRAM量も提供されます。
覚えておいてください
多くの異なるファイル形式やデータソースからpandasにデータを取り込むことは、
read_*関数によってサポートされています。pandasからデータをエクスポートすることは、異なる
to_*メソッドによって提供されます。head/tail/infoメソッドとdtypes属性は、最初の確認に便利です。
pandasとの入出力の可能性の完全な概要については、リーダーおよびライター関数に関するユーザーガイドのセクションを参照してください。