【Python】pandasデータフレーム作成ガイド:基本から応用まで徹底解説

はじめに

本記事では、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つです。ぜひ、本記事を参考にして、自分なりのデータフレームの作成方法や操作方法を身につけてください。