はじめに
本記事では、Pythonのデータ分析ライブラリであるpandasの基本的な使い方について解説します。pandasは、表形式のデータを扱う際に便利な機能を提供しており、データフレームを作成したり、加工したりすることができます。本記事では、pandasデータフレームの基本概念から応用的な操作まで、徹底的に解説していきます。
pandasデータフレームの基本概念と作成方法
pandasのデータフレームは、2次元の表形式のデータを扱うためのデータ構造です。データフレームは、行と列からなり、それぞれにラベルをつけることができます。
まずは、pandasをインポートし、データフレームを作成する方法を見ていきましょう。
import pandas as pd # データフレームの作成 df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}) print(df)
上記のコードでは、辞書型のデータを用いてデータフレームを作成しています。各要素には、’A’, ‘B’, ‘C’という列ラベルが付与されています。
また、列ラベルに対応するデータは、リストで指定されています。ここでは、’A’列には[1, 2, 3]、’B’列には[4, 5, 6]、’C’列には[7, 8, 9]が格納されます。
上記のコードを実行すると、以下のような出力が得られます。
A B C 0 1 4 7 1 2 5 8 2 3 6 9
このように、データフレームを作成すると、行・列のラベルが付与され、2次元の表形式のデータを扱うことができます。
データフレームへのデータ追加方法
pandasのデータフレームでは、列や行に新たなデータを追加することができます。ここでは、列や行にデータを追加する方法を見ていきましょう。
列へのデータ追加
データフレームに新しい列を追加するには、以下のように記述します。
df['D'] = [10, 11, 12] print(df)
上記のコードでは、新しい列’D’を追加しています。リスト[10, 11, 12]が列’D’に対応するデータとして追加されます。
上記のコードを実行すると、以下のような出力が得られます。
A B C D 0 1 4 7 10 1 2 5 8 11 2 3 6 9 12
このように、新しい列が追加され、データが更新されたことが確認できます。
行へのデータ追加
データフレームに新しい行を追加するには、以下のように記述します。
new_row = pd.Series({'A': 4, 'B': 7, 'C': 10, 'D': 13}) df = df.append(new_row, ignore_index=True) print(df)
上記のコードでは、新しい行を追加するために、pd.Seriesを用いてシリーズ型のデータを作成し、そのデータをデータフレームに追加しています。
また、新しい行を追加する際には、ignore_index=Trueと指定しています。これは、インデックスを自動で振り直すためのオプションです。
上記のコードを実行すると、以下のような出力が得られます。
A B C D 0 1 4 7 10 1 2 5 8 11 2 3 6 9 12 3 4 7 10 13
このように、新しい行が追加され、データが更新されたことが確認できます。
データフレームの列・行操作
pandasのデータフレームでは、列や行を選択して取り出すことができます。ここでは、列や行を取り出す方法を見ていきましょう。
列の取り出し
データフレームから特定の列を取り出すには、以下のように記述します。
col_A = df['A'] print(col_A)
上記のコードでは、データフレームの’A’列を取り出しています。取り出された列は、シリーズ型のデータとしてcol_Aに代入され、出力されます。
上記のコードを実行すると、以下のような出力が得られます。
0 1 1 2 2 3 3 4 Name: A, dtype: int64 }}
このように、特定の列を取り出すことができます。
行の取り出し
データフレームから特定の行を取り出すには、以下のように記述します。
row_0 = df.iloc[0] print(row_0)
上記のコードでは、データフレームの0行目を取り出しています。取り出された行は、シリーズ型のデータとしてrow_0に代入され、出力されます。
上記のコードを実行すると、以下のような出力が得られます。
A 1 B 4 C 7 D 10 Name: 0, dtype: int64
このように、特定の行を取り出すことができます。
データフレームのデータ型変換と欠損値処理
データフレームでは、各列のデータ型を変換したり、欠損値を処理したりすることができます。ここでは、データ型変換と欠損値処理について見ていきましょう。
データ型変換
データフレームの列のデータ型を変換するには、astype()メソッドを使用します。
df['A'] = df['A'].astype(str) print(df.dtypes)
上記のコードでは、データフレームの’A’列のデータ型をintからstrに変更しています。
上記のコードを実行すると、以下のような出力が得られます。
A object B int64 C int64 D int64 dtype: object
このように、データフレームの列のデータ型を変換することができます。
欠損値処理
データフレームの欠損値を処理するには、fillna()メソッドを使用します。
df.loc[0, 'B'] = None df.fillna(0, inplace=True) print(df)
上記のコードでは、データフレームの(0, ‘B’)の要素に欠損値を設定しています。その後、fillna()メソッドで欠損値を0で埋めています。
また、fillna()メソッドを使用する際には、inplace=Trueと指定することで、元のデータフレームを更新します。
上記のコードを実行すると、以下のような出力が得られます。
A B C D 0 1 0.0 7 10 1 2 5.0 8 11 2 3 6.0 9 12 3 4 7.0 10 13
このように、欠損値を処理することができます。
データフレームの統計量と百分位数の計算
データフレームでは、各列の統計量を計算することができます。ここでは、統計量と百分位数の計算方法について見ていきましょう。
統計量の計算
データフレームの統計量を計算するには、describe()メソッドを使用します。
stats = df.describe() print(stats)
上記のコードでは、データフレームの統計量を計算しています。計算結果は、DataFrame型のデータとしてstatsに代入され、出力されます。
上記のコードを実行すると、以下のような出力が得られます。
B C D count 4.000000 4.000000 4.000000 mean 4.500000 8.500000 11.500000 std 3.109126 1.290994 1.290994 min 0.000000 7.000000 10.000000 25% 3.750000 7.750000 10.750000 50% 5.500000 8.500000 11.500000 75% 6.250000 9.250000 12.250000 max 7.000000 10.000000 13.000000
このように、データフレームの各列の統計量を計算することができます。
百分位数の計算
データフレームの百分位数を計算するには、numpyのpercentile()関数を使用します。
import numpy as np p50 = np.percentile(df['B'], 50) print(p50)
上記のコードでは、データフレームの’B’列の50パーセンタイルを計算しています。計算結果は、p50に代入され、出力されます。
上記のコードを実行すると、以下のような出力が得られます。
5.5
このように、データフレームの百分位数を計算することができます。
まとめ
今回は、pandasのデータフレーム作成について、基本的な概念から応用的な操作までを解説しました。
データフレームは、大量のデータを扱う場合に非常に便利で、Pythonのデータ分析においては必須のツールの1つです。ぜひ、本記事を参考にして、自分なりのデータフレームの作成方法や操作方法を身につけてください。