MENU

Pythonによるデータ分析入門:PandasとNumPyの活用

データ分析を行ううえで、Pythonは非常に人気の高いプログラミング言語です。特に、Pythonにはデータ分析に特化した豊富なライブラリが用意されており、中でもNumPyPandasは必須とも言える存在です。本記事では、これからPythonでデータ分析を始めようと考えている方向けに、NumPyとPandasを使った基本的なデータ分析手法をわかりやすく解説します。


目次

1. Pythonでデータ分析を始めるメリット

  1. 豊富なライブラリ
    NumPyやPandas以外にも、可視化用のMatplotlibや機械学習用のscikit-learnなど、用途に合わせたライブラリが数多く存在します。
  2. 学習コストの低さ
    Pythonはシンプルで読みやすい文法が特徴であるため、プログラミング初心者でも比較的短期間で習得しやすい言語です。
  3. 活発なコミュニティ
    世界中にユーザーコミュニティがあるため、学習時に困ったときも情報を見つけやすいというメリットがあります。

2. NumPyとは?

NumPy (Numerical Python) は、Pythonで数値計算や配列操作を効率的に行うためのライブラリです。通常のPythonのリストを使うよりも、多次元配列(ndarray)で高速かつメモリ効率の良い処理が可能となります。

2.1 NumPyの主な機能

  • 多次元配列 (ndarray) のサポート
    高速演算が可能で、大量の要素を効率よく操作できます。
  • 数学関数の提供
    統計や線形代数など、データ分析に必須の数学関数が多数含まれています。
  • ブロードキャスト機能
    配列同士の形状が異なる場合でも、形状を自動的に合わせて演算を行うことができます。

2.2 NumPyの簡単なサンプルコード

import numpy as np

# NumPy配列を作成
a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])

# 要素同士の演算
print(a + b)   # [11 22 33 44]
print(a * b)   # [10 40 90 160]

# 多次元配列
matrix = np.array([[1, 2], [3, 4]])
print(matrix)
# [[1 2]
#  [3 4]]

# 行列の演算
print(matrix.T)  # 転置
# [[1 3]
#  [2 4]]

3. Pandasとは?

Pandas は、表形式のデータ(スプレッドシートやSQLテーブルのような構造)を扱いやすくするためのライブラリです。Series(1次元配列)とDataFrame(2次元配列)というデータ構造を提供し、柔軟なデータ操作が可能になります。

3.1 Pandasの主な機能

  • DataFrameによるデータ操作
    行列形式でデータを扱えるため、列名やインデックスでデータを参照しやすいです。
  • データ読み込み・書き出し
    CSVやExcel、SQLなど多様な形式のデータを簡単に読み込んだり出力したりできます。
  • 集計・グループ化
    groupby関数を使って、統計量の集計やグループ化した分析を容易に行えます。
  • 欠損値処理
    NaNや欠損データを簡単に扱えるため、前処理がスムーズです。

3.2 Pandasの簡単なサンプルコード

import pandas as pd

# サンプルデータを辞書形式で用意し、DataFrameに変換
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['Tokyo', 'Osaka', 'Nagoya']
}
df = pd.DataFrame(data)
print(df)

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

# データの先頭5行を表示
print(df_csv.head())

# 特定列のみ抽出
print(df_csv['Age'])

# 統計量のまとめ表示
print(df_csv.describe())

# groupbyによる集計
grouped = df_csv.groupby('City')
print(grouped['Age'].mean())

4. NumPyとPandasを使ったデータ分析の基本的な流れ

  1. データの取得(インポート)
    CSVやExcel、データベースなどからデータを読み込みます。
  2. データの確認・クリーニング
    欠損値や異常値を検出し、適切に処理します。
  3. データの整形・加工
    必要な列の抽出や、複数ファイルを結合・マージ、必要に応じて集計やフィルタリングなどの前処理を行います。
  4. 可視化・解析
    MatplotlibやSeabornなどを使ってグラフ化し、傾向や特徴を把握します。NumPyやPandasで統計的指標を計算することも多いです。
  5. 結果の考察
    得られた結果を元に、ビジネスや研究に活用するための洞察を得ます。

5. 実践例:簡単なデータ分析ワークフロー

以下は、架空の売上データを使った簡単なデータ分析ワークフローの例です。

import numpy as np
import pandas as pd

# 1. データの読み込み
df_sales = pd.read_csv('sales_data.csv')  # 売上データのCSVを読み込み

# 2. データの確認
print(df_sales.head())       # 先頭5行
print(df_sales.info())       # 列の情報(データ型や欠損数など)
print(df_sales.describe())   # 基本統計量

# 3. 欠損値の処理
# 例:欠損値を0で埋める方法
df_sales['Revenue'] = df_sales['Revenue'].fillna(0)

# 4. フィルタリング
# 例:地域が'Tokyo'のデータのみ取得
df_tokyo = df_sales[df_sales['Region'] == 'Tokyo']

# 5. グループ化と集計
# 例:地域ごとの平均売上
mean_revenue_by_region = df_sales.groupby('Region')['Revenue'].mean()
print(mean_revenue_by_region)

# 6. 新しい列の追加
# 例:数量 (Quantity) × 単価 (UnitPrice) を計算して販売額 (Revenue) とする
df_sales['CalculatedRevenue'] = df_sales['Quantity'] * df_sales['UnitPrice']

# 7. NumPyの機能を活用した演算
# 例:アノマリー(異常値)とみなす基準でフィルタリング
mean_revenue = np.mean(df_sales['Revenue'])
std_revenue = np.std(df_sales['Revenue'])

# 異常値とみなす範囲を±3σとした例
anomalies = df_sales[
    (df_sales['Revenue'] < mean_revenue - 3*std_revenue) |
    (df_sales['Revenue'] > mean_revenue + 3*std_revenue)
]

print("Anomalies:")
print(anomalies)

6. 開発環境・インストール方法

6.1 Anacondaの利用

Pythonでデータ分析を行う場合、Anacondaディストリビューションを使うと便利です。AnacondaにはNumPyやPandasを含め多くの科学技術計算向けライブラリがあらかじめ含まれています。

6.2 pipによるインストール

Anacondaを利用しない場合も、pipで以下のようにインストールすることができます。

pip install numpy
pip install pandas

7. まとめ

NumPyとPandasは、Pythonを使ったデータ分析には欠かせないライブラリです。NumPyは配列処理を高速化し、Pandasはテーブル形式のデータを扱いやすくしてくれます。この2つのライブラリを組み合わせることで、大規模かつ複雑なデータであっても効率的に処理・分析することが可能です。

データ分析の流れとしては、データの取得 → 確認・クリーニング → 加工 → 可視化 → 考察 が一連のステップとなります。皆さんもまずは小規模なデータやサンプルデータから触れてみて、NumPyとPandasに慣れていきましょう。その後に本番データを取り扱うことで、一段とスムーズに分析作業を進められるようになります。

ぜひ、この機会にPythonによるデータ分析を始めてみてください!


参考リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

SESで常駐しているサーバーエンジニアの普通の会社員
物理サーバーの導入、仮想基盤サーバーの導入、クラウド環境の導入作業等を設計から行っています。
趣味はゲームと漫画・アニメ
最近の口癖は時間がほしい。
最近はプログラミングもやりたいなぁと思い、独学で少しずつ勉強中。

コメント

コメントする

目次