import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
CSVファイルを読み込む
train_data = pd.read_csv('hour_train.csv')
temp, atemp, hum, windspeed, casual, registered, cntの相関行列を計算
corr_matrix = train_data[['temp', 'atemp', 'hum', 'windspeed', 'casual', 'registered', 'cnt']].corr()
ヒートマップを作成
plt.figure(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt='.2f')
ヒートマップのタイトルを設定
plt.title('Correlation Heatmap of Bike Sharing Data')
ヒートマップを表示
plt.show()
temp atempが弱い正の相関
humが弱い負の相関
カテゴリカルデータを指定
categoricals = ['season', 'yr', 'mnth', 'hr', 'holiday', 'weekday', 'workingday', 'weathersit']
グラフを描画
plt.figure(figsize=(14, 10))
for i, category in enumerate(categoricals, 1):
plt.subplot(2, 4, i)
# カテゴリごとに'casual', 'registered', 'cnt'を合計
category_data = train_data.groupby(category)[['casual', 'registered', 'cnt']].sum().reset_index()
# 棒グラフを描画
category_data.plot(x=category, kind='bar', stacked=False, ax=plt.gca())
# グラフのタイトルとラベルを設定
plt.title(f'{category} vs Bike Usage')
plt.xlabel(category)
plt.ylabel('Total Number of Users')
グラフのレイアウトを調整
plt.tight_layout()
グラフを表示
plt.show()
seasonは夏秋が多い
yrは年がたつにつれて、増えている。バイクレンタルが普及している。
mnthは夏と冬が増えている
hrは朝と夕方が多い。通勤に使っている人がいる。
holidayは平日が多い。が多い。
humが弱い負の相関
temp atempが弱い正の相関
humが弱い負の相関
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
CSVファイルを読み込む
train_data = pd.read_csv('hour_train.csv')
各データの統計量を計算
stats = {
'Casual': {
'mean': train_data['casual'].mean(),
'median': train_data['casual'].median(),
'std': train_data['casual'].std()
},
'Registered': {
'mean': train_data['registered'].mean(),
'median': train_data['registered'].median(),
'std': train_data['registered'].std()
},
'Total': {
'mean': train_data['cnt'].mean(),
'median': train_data['cnt'].median(),
'std': train_data['cnt'].std()
}
}
ヒストグラムの描画
plt.figure(figsize=(14, 10))
plt.subplot(2, 2, 1)
plt.hist(train_data['casual'], bins=30, alpha=0.5, label='Casual', color='blue')
plt.hist(train_data['registered'], bins=30, alpha=0.5, label='Registered', color='orange')
plt.hist(train_data['cnt'], bins=30, alpha=0.5, label='Total', color='green')
plt.title('Distribution of Casual, Registered, and Total Users')
plt.xlabel('Number of Users')
plt.ylabel('Frequency')
plt.legend(loc='upper right')
統計量の棒グラフを描画
plt.subplot(2, 2, 2)
stats_df = pd.DataFrame(stats).T
stats_df.plot(kind='bar', ax=plt.gca(), color=['blue', 'orange', 'green'], edgecolor='black')
plt.title('Statistics of Casual, Registered, and Total Users')
plt.xlabel('Category')
plt.ylabel('Value')
plt.xticks(rotation=0)
plt.legend(['Mean', 'Median', 'Standard Deviation'])
グラフのレイアウトを調整
plt.tight_layout()
グラフを表示
plt.show()