ホーム テクノロジー 開発 Pandas データフレームを作成する方法 [例付き]

pandas DataFrame の操作の基本、つまり強力なデータ操作ライブラリである pandas の基本データ構造を学びます。

Python でデータ分析を始めたい場合、pandas は操作方法を学ぶべき最初のライブラリの 1 つです。 CSV ファイルやデータベースなどの複数のソースからのデータのインポートから、欠落したデータの処理、分析による洞察の取得まで、パンダなら上記のすべてを実行できます。

pandas でデータ分析を開始するには、pandas の基本的なデータ構造であるデータ フレームを理解する必要があります。

このチュートリアルでは、pandas データフレームの基本とデータフレームを作成する一般的な方法を学びます。次に、データのサブセットを取得するためにデータフレームから行と列を選択する方法を学びます。

以上のことをすべて始めましょう。

パンダのインストールとインポート

pandas はサードパーティのデータ分析ライブラリであるため、最初にインストールする必要があります。プロジェクトの仮想環境に外部パッケージをインストールすることをお勧めします。

Python の Anaconda ディストリビューションを使用する場合は、パッケージ管理にcondaを使用できます。

 conda install pandas

pip を使用してパンダをインストールすることもできます。

 pip install pandas

⚙ pandas ライブラリには依存関係として NumPy が必要です。したがって、NumPy がまだインストールされていない場合は、インストール プロセス中にインストールされます。

pandas をインストールしたら、作業環境にインポートできます。一般に、パンダはエイリアスpdでインポートされます。

 import pandas as pd

Pandas の DataFrame とは何ですか?

Pandas の DataFrame とは
Pandas の DataFrame とは

pandas の基本的なデータ構造はデータ フレームです。データ フレームは、ラベル付きインデックスと名前付き列を持つデータの 2 次元配列です。 pandasシリーズと呼ばれるデータ フレーム内の各列は、共通のインデックスを共有します。

これは、今後数分間で最初から作成するデータ フレームの例です。このデータ フレームには、6 人の学生が 4 週間でどれくらいの費用を費やしたかに関するデータが含まれています。

pd-データフレーム-ex
pd-データフレーム-ex

生徒の名前が行ラベルです。そして、列には「Week1」から「Week4」という名前が付けられます。すべての列が、インデックスとも呼ばれる同じ行ラベルのセットを共有していることに注意してください。

Pandas データフレームを作成する方法

pandas データ フレームを作成するにはいくつかの方法があります。このチュートリアルでは、次の方法について説明します。

  • NumPy 配列からデータ フレームを作成する
  • Python 辞書からデータ フレームを作成する
  • CSVファイルを読み込んでデータフレームを作成する

NumPy 配列から

NumPy 配列からデータ フレームを作成しましょう。

特定の週に各生徒が 0 ドルから 100 ドルの間で支出すると仮定して、形状 (6,4) のデータ配列を作成しましょう。 NumPy のrandomモジュールのrandint()関数は、指定された間隔[low,high)でランダムな整数の配列を返します。

 import numpy as np
np.random.seed(42)
data = np.random.randint(0,101,(6,4))
print(data)
 array([[51, 92, 14, 71],
       [60, 20, 82, 86],
       [74, 74, 87, 99],
       [23,  2, 21, 52],
       [ 1, 87, 29, 37],
       [ 1, 63, 59, 20]])

pandas データ フレームを作成するには、次に示すように、 DataFrameコンストラクターを使用し、NumPy 配列をdata引数として渡すことができます。

 students_df = pd.DataFrame(data=data)

これで、組み込みのtype()関数を呼び出して、 students_dfの型を確認できるようになりました。これはDataFrameオブジェクトであることがわかります。

 type(students_df)
# pandas.core.frame.DataFrame
 print(students_df) 
パンダデータフレーム-01
パンダデータフレーム-01

デフォルトでは、0 からnumRows – 1 までの範囲インデックスがあり、列ラベルは 0、1、2、…、 numCols -1 であることがわかります。ただし、これにより可読性が低下します。説明的な列名と行ラベルをデータ フレームに追加すると役立ちます。

2 つのリストを作成しましょう。1 つは生徒の名前を保存するリストで、もう 1 つは列ラベルを保存するリストです。

 students = ['Amy','Bob','Chris','Dave','Evelyn','Fanny']
cols = ['Week1','Week2','Week3','Week4']

DataFrameコンストラクターを呼び出すときに、使用する行ラベルと列ラベルのリストにindexcolumnsそれぞれ設定できます。

 students_df = pd.DataFrame(data = data,index = students,columns = cols)

これで、説明的な行ラベルと列ラベルが付いたstudents_dfデータ フレームが完成しました。

 print(students_df) 
パンダデータフレーム-02
パンダデータフレーム-02

欠損値やデータ型など、データ フレームに関する基本情報を取得するには、データ フレーム オブジェクトのinfo()メソッドを呼び出します。

 students_df.info() 
画像-114
画像-114

Python 辞書から

Python 辞書から pandas データ フレームを作成することもできます。

ここで、 data_dict生徒データを含む辞書です。

  • 生徒の名前が鍵となります。
  • それぞれの値は、各生徒が第 1 週から第 4 週までに費やした金額のリストです。
 data_dict = {}
students = ['Amy','Bob','Chris','Dave','Evelyn','Fanny']
for student,student_data in zip(students,data):
  data_dict[student] = student_data

Python 辞書からデータ フレームを作成するには、以下に示すようにfrom_dict使用します。最初の引数は、データを含む辞書 ( data_dict ) に対応します。デフォルトでは、キーはデータ フレームの列名として使用されます。キーを行ラベルとして設定したいので、 orient= 'index'を設定します。

 students_df = pd.DataFrame.from_dict(data_dict,orient='index')
print(students_df) 
pandas-dataframe-from-dict
pandas-dataframe-from-dict

列名を週番号に変更するには、列をcolsリストに設定します。

 students_df = pd.DataFrame.from_dict(data_dict,orient='index',columns=cols)
print(students_df) 
パンダデータフレーム-03
パンダデータフレーム-03

CSV ファイルを Pandas DataFrame に読み込みます

学生データが CSV ファイルとして利用できるとします。 read_csv()関数を使用して、ファイルから pandas データ フレームにデータを読み取ることができます。 pd.read_csv('file-path')一般的な構文で、 file-pathは CSV ファイルへのパスです。 namesパラメータを使用する列名のリストに設定できます。

 students_df = pd.read_csv('/content/students.csv',names=cols)

データ フレームの作成方法がわかったので、次は行と列を選択する方法を学びましょう。

Pandas DataFrame から列を選択する

データ フレームから行と列を選択するために使用できる組み込みメソッドがいくつかあります。このチュートリアルでは、データ フレームから列、行、および行と列の両方を選択する最も一般的な方法について説明します。

単一列の選択

単一の列を選択するには、 df_name[col_name]を使用できます。ここで、 col_nameは列の名前を示す文字列です。

ここでは、「Week1」列のみを選択します。

 week1_df = students_df['Week1']
print(week1_df) 
単一列
単一列

複数の列の選択

データ フレームから複数の列を選択するには、選択するすべての列名のリストを渡します。

 odd_weeks = students_df[['Week1','Week3']]
print(odd_weeks) 
複数列
複数列

このメソッドに加えて、 iloc()メソッドとloc()メソッドを使用して列を選択することもできます。後でサンプルをコーディングします。

Pandas DataFrame から行を選択する

4-2
4-2

.iloc() メソッドの使用

iloc()メソッドを使用して行を選択するには、すべての行に対応するインデックスをリストとして渡します。

この例では、奇数のインデックスにある行を選択します。

 odd_index_rows = students_df.iloc[[1,3,5]]
print(odd_index_rows) 
奇数行
奇数行

次に、インデックス 0 ~ 2 の行を含むデータ フレームのサブセットを選択します。エンドポイント 3 はデフォルトで除外されます。

 slice1 = students_df.iloc[0:3]
print(slice1) 
行の選択
行の選択

.loc() メソッドの使用

loc()メソッドを使用してデータ フレームの行を選択するには、選択する行に対応するラベルを指定する必要があります。

 some_rows = students_df.loc[['Bob','Dave','Fanny']]
print(some_rows) 
いくつかの行
いくつかの行

データ フレームの行がデフォルト範囲 0、1、2 からnumRows -1 までを使用してインデックス付けされている場合、 iloc()loc()の使用はどちらも同等です。

Pandas DataFrame から行と列を選択する

ここまでは、pandas データ フレームから行または列を選択する方法を学習しました。ただし、行と列の両方のサブセットを選択する必要がある場合があります。それで、どうやってやるのですか?これまでに説明したiloc()メソッドとloc()メソッドを使用できます。

たとえば、以下のコード スニペットでは、インデックス 2 と 3 にあるすべての行と列を選択します。

 subset_df1 = students_df.iloc[:,[2,3]]
print(subset_df1) 
データフレームサブセット
データフレームサブセット

start:stopを使用すると、 startから stop までのスライスが作成されますが、 stop含まれません。したがって、 startstop値の両方を無視すると、スライスは先頭から始まり、データ フレームの終わりまで拡張され、すべての行が選択されます。

loc()メソッドを使用する場合は、次のように、選択する行と列のラベルを渡す必要があります。

 subset_df2 = students_df.loc[['Amy','Evelyn'],['Week1','Week3']]
print(subset_df2) 
df サブセット
df サブセット

ここで、データフレームsubset_df2は、Week1 と Week3 の Amy と Evelyn のレコードが含まれています。

結論

このチュートリアルで学んだ内容を簡単に復習します。

  • pandas をインストールした後、エイリアスpdでインポートできます。 pandas データ フレーム オブジェクトを作成するには、 pd.DataFrame(data)コンストラクターを使用できます。ここで、 data N 次元配列、またはデータを含む反復可能オブジェクトを参照します。オプションのインデックスパラメータと列パラメータをそれぞれ設定することで、行とインデックス、および列ラベルを指定できます。
  • pd.read_csv(path-to-the-file)を使用すると、ファイルの内容がデータ フレームに読み込まれます。
  • データ フレーム オブジェクトのinfo()メソッドを呼び出して、列、欠損値の数、データ型、およびデータ フレームのサイズに関する情報を取得できます。
  • 単一の列を選択するにはdf_name[col_name]を使用し、複数の列 (特定の列) を選択するにはdf_name[[col1,col2,...,coln]]
  • loc()メソッドとiloc()メソッドを使用して列と行を選択することもできます。
  • iloc()メソッドは選択する行と列のインデックス (またはインデックス スライス) を受け取りますが、 loc()メソッドは行と列のラベルを受け取ります。

このチュートリアルで使用されている例は、この Colab ノートブックにあります。

次に、コラボレーション用データ サイエンス ノートブックのリストをチェックしてください。

「 Pandas データフレームを作成する方法 [例付き]」についてわかりやすく解説!絶対に観るべきベスト2動画

Pandas入門講座|12.concat関数でデータフレーム同士を結合する方法【PythonのライブラリPandas】
Pandas入門|04.データフレーム (DataFrame) とは|データフレーム作成、インデックスやカラムの変更方法、データ操作【Python必須ライブラリPandasを初心者にわかりやすく解説】

Share via
Copy link