Pandasでできること:初心者向けわかりやすい解説

はじめに

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を使ってデータを扱うことができるようになるでしょう。