はじめに
Pandasは、Pythonのデータ分析ライブラリで、大規模なデータ処理に適しています。Pandasを使うことで、データの読み込み、書き出し、選択、抽出、フィルタリング、統計量や要約の計算、欠損値の処理、データの結合や連結、ピボットといった様々な操作が簡単に行えます。
Pandasの基本的な概念とデータ構造
Pandasには、2つの主要なデータ構造があります。1つはSeriesで、1次元のデータを扱います。もう1つはDataFrameで、2次元の表形式のデータを扱います。Seriesは、インデックスと値のペアで構成されています。DataFrameは、複数のSeriesを結合したもので、行と列からなる表形式のデータです。
まず、Pandasをインポートしましょう。
import pandas as pd
次に、Seriesを作成してみましょう。
s = pd.Series([1, 3, 5, 7, 9])
この場合、インデックスは自動的に0から始まる整数が割り当てられます。Seriesには、インデックスを明示的に指定することもできます。
s = pd.Series([1, 3, 5, 7, 9], index=['a', 'b', 'c', 'd', 'e'])
次に、DataFrameを作成してみましょう。
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [25, 32, 18, 47], 'country': ['USA', 'Canada', 'Australia', 'USA']} df = pd.DataFrame(data)
この場合、列名が自動的に生成されます。DataFrameには、列名を明示的に指定することもできます。
df = pd.DataFrame(data, columns=['name', 'age', 'country'])
データの読み込みと書き出し
Pandasを使って、CSV、Excel、SQLデータベース、HTML、JSON、テキストファイルなど、様々な形式のデータを読み込むことができます。また、DataFrameをCSV、Excel、SQLデータベース、HTML、JSON、テキストファイルなどの形式で書き出すこともできます。
例えば、CSVファイルを読み込む場合は、pd.read_csv()関数を使用します。
df = pd.read_csv('data.csv')
Excelファイルを読み込む場合は、pd.read_excel()関数を使用します。
df = pd.read_excel('data.xlsx')
SQLiteデータベースを読み込む場合は、pd.read_sql()関数を使用します。
import sqlite3 conn = sqlite3.connect('example.db') df = pd.read_sql('SELECT * FROM table_name', conn)
読み込んだデータをCSVファイルに書き出す場合は、to_csv()メソッドを使用します。
df.to_csv('output.csv')
Excelファイルに書き出す場合は、to_excel()メソッドを使用します。
df.to_excel('output.xlsx')
SQLiteデータベースに書き出す場合は、to_sql()メソッドを使用します。
df.to_sql('table_name', conn)
データの選択・抽出・フィルタリング
Pandasを使って、データの選択、抽出、フィルタリングを行うことができます。
まず、列を選択する場合は、列名を指定します。
df['name']
複数の列を選択する場合は、列名をリストで指定します。
df[['name', 'age']]
行を選択する場合は、行の範囲を指定します。
df[1:3]
条件に合致する行を抽出する場合は、locを使用します。
df.loc[df['age'] > 30]
条件に合致しない行を抽出する場合は、~を使用します。
df.loc[~(df['age'] > 30)]
複数の条件を指定する場合は、&や|を使用します。
df.loc[(df['age'] > 30) & (df['country'] == 'USA')]
特定の値を含む行を抽出する場合は、isin()を使用します。
df.loc[df['country'].isin(['USA', 'Canada'])]
部分文字列を含む行を抽出する場合は、str.contains()を使用します。
df.loc[df['name'].str.contains('li')]
データの統計量と要約
Pandasを使って、データの統計量や要約を計算することができます。
まず、列の平均値、中央値、最大値、最小値、標準偏差などを計算する場合は、mean()、median()、max()、min()、std()などのメソッドを使用します。
df['age'].mean() df['age'].median() df['age'].max() df['age'].min() df['age'].std()
全体の統計量を計算する場合は、describe()メソッドを使用します。
df.describe()
欠損値の処理
データには、欠損値が含まれることがあります。Pandasを使って、欠損値を処理することができます。
欠損値を含む行を削除する場合は、dropna()メソッドを使用します。
df.dropna()
欠損値を他の値で埋める場合は、fillna()メソッドを使用します。
df.fillna(0)
データの結合・連結・ピボット
Pandasを使って、複数のデータを結合したり、連結したり、ピボットしたりすることができます。
複数のDataFrameを結合する場合は、merge()関数を使用します。
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]}) df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'], 'value': [5, 6, 7, 8]}) df3 = pd.merge(df1, df2, on='key')
複数のDataFrameを縦方向に連結する場合は、concat()関数を使用します。
df4 = pd.concat([df1, df2], axis=0)
複数のDataFrameを横方向に連結する場合は、concat()関数を使用します。
df5 = pd.concat([df1, df2], axis=1)
ピボットテーブルを作成する場合は、pivot_table()関数を使用します。
df.pivot_table(values='value', index='key', aggfunc='mean')
まとめ
Pandasは、Pythonのデータ分析ライブラリで、大規模なデータ処理に適しています。Pandasを使うことで、データの読み込み、書き出し、選択、抽出、フィルタリング、統計量や要約の計算、欠損値の処理、データの結合や連結、ピボットといった様々な操作が簡単に行えます。
この記事では、Pandasの基本的な概念とデータ構造、データの読み込みと書き出し、データの選択・抽出・フィルタリング、データの統計量と要約、欠損値の処理、データの結合・連結・ピボットについて説明しました。これらの操作を理解することで、Pandasを使ってデータを扱うことができるようになるでしょう。