NumPyの基礎
NumPyは、科学計算やデータ解析に最適な高速な配列演算を提供するライブラリです。
配列の基本属性
- ndim:配列の次元数
- shape:各次元のサイズを示すタプル
- size:配列の要素数
- dtype:配列のデータ型
- itemsize:各要素のバイト数
配列の作成と操作
import numpy as np
# 1次元配列の作成
data = np.array([10, 20, 30, 40, 50])
print("1次元配列:", data)
# 2次元配列の作成
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print("2次元配列:", matrix)
# 配列の計算
print("配列の計算結果:", data * 2)
# 配列のアクセス
print("2次元配列の第2行第1列:", matrix[1, 0])
print("2次元配列の第1行:", matrix[0, :])
配列の計算
import numpy as np
# 配列の生成
arr = np.arange(10)
print("生成された配列:", arr)
# 基本統計量の計算
print("平均値:", np.mean(arr))
print("標準偏差:", np.std(arr))
print("合計:", np.sum(arr))
2次元配列の操作
import numpy as np
# 正規分布に従う2次元配列の生成
X = np.random.randn(3, 4)
print("X:", X)
# 単位行列の生成
Y = np.eye(4)
print("Y:", Y)
# 行列の積
result = np.dot(X, Y)
print("行列の積:", result)
Pandasの基礎
Seriesの作成と操作
import pandas as pd
# Seriesの作成
data = pd.Series([100, 200, 300, 400], index=['A', 'B', 'C', 'D'])
print("Seriesの値:", data.values)
print("Seriesのインデックス:", data.index)
# インデックスによるアクセス
print("インデックス 'B' と 'D' にアクセス:", data[['B', 'D']])
DataFrameの作成と操作
import pandas as pd
# DataFrameの作成
df = pd.DataFrame({
'A': [1, 2, 3],
'B': ['a', 'b', 'c']
})
# 列のアクセス
print("列 'A' にアクセス:", df['A'])
# 行列のアクセス
print("行番号1、列番号0にアクセス:", df.iloc[1, 0])
# 条件によるアクセス
print("列 'B' が 'a' である行にアクセス:", df[df['B'] == 'a'])
NumPyとPandasの応用
データの前処理
import pandas as pd
# Excelファイルの読み込み
data = pd.read_excel('air_quality.xlsx')
# 0をNaNに置換
data = data.replace(0, np.nan)
# 新しい列の作成
data['year'] = data['date'].apply(lambda x: x.year)
data['month'] = data['date'].apply(lambda x: x.month)
基本分析
import pandas as pd
# グループ化と平均値の計算
grouped = data[['AQI', 'PM2.5']].groupby(data['year'])
print("各年の平均値:", grouped.mean())
# 空気質の最上位3日を抽出
def top(df, n=3):
return df.sort_values(by='AQI', ascending=False)[:n]
result = data.groupby(data['year']).apply(top)
print("最上位3日のデータ:", result)
可視化
import matplotlib.pyplot as plt
# 折線グラフの作成
plt.figure(figsize=(10, 5))
plt.plot(data['AQI'], color='black', linestyle='-', linewidth=0.5)
plt.title('年間AQIの時系列変化')
plt.xlabel('日付')
plt.ylabel('AQI')
plt.show()