1
0

Pandas入門~データ分析~【Python】

Posted at

はじめに

Pandasは、Pythonでデータ分析を行うための非常に便利なライブラリです。
データの操作や分析を簡単にするための機能が豊富に揃っており、特にデータフレーム(表形式のデータ構造)の扱いに優れています。

インストール

pip install pandas

基本概念

Series: 一次元のデータ(リストや配列に似たもの)
DataFrame: 二次元のデータ(表形式のデータ)

Seriesの基本操作

.Seriesの作成
import pandas as pd

# リストからSeriesを作成
data = [10, 20, 30, 40]
s = pd.Series(data)
print(s)
.インデックスの指定
# インデックスを指定してSeriesを作成
s = pd.Series(data, index=['a', 'b', 'c', 'd'])
print(s)
.基本操作
# 特定のインデックスの値にアクセス
print(s['b'])  # 出力: 20

# Seriesの要素に演算を適用
print(s + 10)  # 出力: a    20
              #         b    30
              #         c    40
              #         d    50

DataFrameの基本操作

.DataFrameの作成
# 辞書からDataFrameを作成
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)
.データの選択とフィルタリング
# 列の選択
print(df['Name'])

# 行の選択(インデックスで選択)
print(df.loc[1])  # 出力: Name       Bob
                 #         Age        30
                 #         City  Los Angeles

# 条件に基づくフィルタリング
print(df[df['Age'] > 28])  # 出力: Name   Age         City
                           #         Bob    30  Los Angeles
                           #         Charlie  35      Chicago
.データの集計
# 基本統計量の取得
print(df.describe())

# 特定の列でグループ化して集計
print(df.groupby('City').mean())  # この例では平均年齢を計算

データの入出力

# CSVファイルの読み込み
df = pd.read_csv('data.csv')

# CSVファイルへの書き込み
df.to_csv('output.csv', index=False)

データの前処理

.欠損値の処理
# 欠損値の確認
print(df.isnull().sum())

# 欠損値の削除
df_cleaned = df.dropna()

# 欠損値の補完
df_filled = df.fillna(value='Unknown')
.データの変換
# データ型の変換
df['Age'] = df['Age'].astype(float)

時系列データの操作

.日時データの作成と操作
# 日時データの作成
dates = pd.date_range(start='2023-01-01', periods=5, freq='D')
df_dates = pd.DataFrame({'Date': dates, 'Value': [10, 20, 30, 40, 50]})
print(df_dates)

# 日時データのインデックス設定
df_dates.set_index('Date', inplace=True)
print(df_dates)

# 日時データの抽出
print(df_dates.loc['2023-01-03'])  # 出力: Value    30
.データのリサンプリング(例えば、日単位から月単位へ)
df_resampled = df_dates.resample('M').sum()
print(df_resampled)
.データフレームの結合(列を追加)
df1 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie']})
df2 = pd.DataFrame({'ID': [1, 2, 3], 'Age': [25, 30, 35]})
df_merged = pd.merge(df1, df2, on='ID')
print(df_merged)
.データフレームの連結(行を追加)
df3 = pd.DataFrame({'ID': [4, 5], 'Name': ['David', 'Eva'], 'Age': [40, 45]})
df_concat = pd.concat([df_merged, df3], ignore_index=True)
print(df_concat)
.ピボットテーブルの作成
df_pivot = pd.DataFrame({
    'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
    'Category': ['A', 'B', 'A', 'B'],
    'Value': [10, 20, 30, 40]
})
pivot_table = pd.pivot_table(df_pivot, values='Value', index='Date', columns='Category', aggfunc='sum')
print(pivot_table)
.クロス集計の作成
cross_tab = pd.crosstab(df_pivot['Category'], df_pivot['Date'], values=df_pivot['Value'], aggfunc='sum')
print(cross_tab)

可視化

Pandasには、簡単なデータ可視化機能も含まれていますが、matplotlibやseabornなどのライブラリと組み合わせて使うことが多いです。

import matplotlib.pyplot as plt

# データフレームをプロット
df_dates['Value'].plot(kind='line')
plt.title('Value Over Time')
plt.xlabel('Date')
plt.ylabel('Value')
plt.show()

データのクリーニングと前処理

.重複行を削除
df_unique = df.drop_duplicates()
print(df_unique)
.データの変換と標準化
# 列のデータ型変換
df['Age'] = df['Age'].astype(float)

# データの標準化(平均0、標準偏差1に変換)
df['Age_standardized'] = (df['Age'] - df['Age'].mean()) / df['Age'].std()
print(df)

まとめ

Pandasは、Pythonでデータ分析を効率的に行うための強力なライブラリです。
Series(一次元データ)とDataFrame(二次元データ)を使ってデータの操作、集計、前処理を簡単に行えます。
基本的な操作として、データの作成、選択、フィルタリング、集計、リサンプリング、結合、ピボットテーブルの作成が可能です。さらに、データの可視化もサポートしており、分析結果を視覚的に確認することができます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0