pandasはどのような種類のデータを扱いますか?#

  • pandasを使い始めたい

    In [1]: import pandas as pd
    

    pandasパッケージをロードして作業を開始するには、パッケージをインポートします。pandasのコミュニティで合意されたエイリアスはpdなので、pandasをpdとしてロードすることは、すべてのpandasドキュメントの標準的な慣行と見なされています。

pandasのデータテーブル表現#

../../_images/01_table_dataframe.svg
  • タイタニックの乗客データを保存したいです。何人かの乗客について、名前(文字列)、年齢(整数)、性別(男性/女性)のデータを知っています。

    In [2]: df = pd.DataFrame(
       ...:     {
       ...:         "Name": [
       ...:             "Braund, Mr. Owen Harris",
       ...:             "Allen, Mr. William Henry",
       ...:             "Bonnell, Miss. Elizabeth",
       ...:         ],
       ...:         "Age": [22, 35, 58],
       ...:         "Sex": ["male", "male", "female"],
       ...:     }
       ...: )
       ...: 
    
    In [3]: df
    Out[3]: 
                           Name  Age     Sex
    0   Braund, Mr. Owen Harris   22    male
    1  Allen, Mr. William Henry   35    male
    2  Bonnell, Miss. Elizabeth   58  female
    

    データを手動でテーブルに保存するには、DataFrameを作成します。Pythonのリストの辞書を使用する場合、辞書のキーは列ヘッダーとして使用され、各リストの値はDataFrameの列として使用されます。

DataFrameは、異なる種類のデータ(文字、整数、浮動小数点値、カテゴリデータなどを含む)を列に格納できる2次元のデータ構造です。これは、スプレッドシート、SQLテーブル、またはRのdata.frameに似ています。

  • このテーブルには3つの列があり、それぞれに列ラベルが付いています。列ラベルはそれぞれNameAgeSexです。

  • Name列は各値が文字列のテキストデータで構成され、Age列は数値、Sex列はテキストデータです。

スプレッドシートソフトウェアでは、データのテーブル表現は非常によく似ています。

../../_images/01_table_spreadsheet.png

DataFrameの各列はSeriesです#

../../_images/01_table_series.svg
  • Age列のデータだけを扱いたい

    In [4]: df["Age"]
    Out[4]: 
    0    22
    1    35
    2    58
    Name: Age, dtype: int64
    

    pandasのDataFrameの単一列を選択すると、結果はpandasのSeriesになります。列を選択するには、角括弧[]の中に列ラベルを使用します。

Pythonの辞書に慣れている場合、単一列の選択は、キーに基づいて辞書の値を選択するのと非常によく似ています。

Seriesをゼロから作成することもできます。

In [5]: ages = pd.Series([22, 35, 58], name="Age")

In [6]: ages
Out[6]: 
0    22
1    35
2    58
Name: Age, dtype: int64

pandasのSeriesは、DataFrameの単一列であるため、列ラベルを持ちません。Seriesは行ラベルを持っています。

DataFrameまたはSeriesで何かを行う#

  • 乗客の最大年齢を知りたい

    DataFrameAge列を選択し、max()を適用することでこれを行うことができます。

    In [7]: df["Age"].max()
    Out[7]: 58
    

    またはSeriesに対して

    In [8]: ages.max()
    Out[8]: 58
    

max()メソッドで示されているように、DataFrameまたはSeriesで何かを*実行*できます。pandasは多くの機能を提供しており、それぞれがDataFrameまたはSeriesに適用できる*メソッド*です。メソッドは関数なので、丸括弧()の使用を忘れないでください。

  • データテーブルの数値データの基本的な統計に関心があります

    In [9]: df.describe()
    Out[9]: 
                 Age
    count   3.000000
    mean   38.333333
    std    18.230012
    min    22.000000
    25%    28.500000
    50%    35.000000
    75%    46.500000
    max    58.000000
    

    describe()メソッドは、DataFrame内の数値データの概要を簡単に提供します。Name列とSex列はテキストデータであるため、これらはデフォルトではdescribe()メソッドによって考慮されません。

多くのpandas操作はDataFrameまたはSeriesを返します。describe()メソッドは、pandasのSeriesまたはpandasのDataFrameを返すpandas操作の一例です。

ユーザーガイドへ

describeに関するその他のオプションについては、describeによる集計に関するユーザーガイドセクションを確認してください。

これは単なる出発点です。スプレッドシートソフトウェアと同様に、pandasはデータを列と行を持つテーブルとして表現します。表現だけでなく、スプレッドシートソフトウェアで行うようなデータ操作や計算もpandasによってサポートされています。次のチュートリアルを読み続けて、始めましょう!

覚えておいてください

  • パッケージをインポートします。import pandas as pd

  • データのテーブルはpandasのDataFrameとして格納されます。

  • DataFrameの各列はSeriesです。

  • メソッドをDataFrameまたはSeriesに適用することで何かを行うことができます。

ユーザーガイドへ

DataFrameSeriesのより詳しい説明は、データ構造の紹介で提供されています。