福岡人データサイエンティストの部屋

データサイエンスを極めるため、日々の学習を綴っています。

統計の基礎やってみた【やさしく学ぶデータ分析に必要な統計の教科書】#002

こんにちは!こーたろーです。

今日は、統計学の基礎をやってみます。

というよりは、統計学のやさしめの教材を学びつつ、データサイエンスに必要な探索的データ分析(EDA)の練習を兼ねています。

是非、皆さんもやってみてくださいね。

教材は【やさしく学ぶ データ分析に必要な統計の教科書 できるビジネスシリーズ】を使用します。

早速トレーニング!
データは前回のブログで紹介したものと同じものを使用します。
参考:統計の基礎やってみた【やさしく学ぶデータ分析に必要な統計の教科書】#001 - 福岡の社会人データサイエンティストの部屋


せっかくなので、初めからやってみます。

必要なライブラリのインポート




import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#matplotlib inline






データの読み込み、表示

sample_df = pd.read_csv('2.csv' , sep=',')
sample_df

【操作2-1】 分布の上限と下限を確認


a = sample_df['minutes'].max()
b = sample_df['minutes'].min()
print('max is {0}, min is {1}'.format(a,b))



f:id:dsf-kotaro:20210131155505p:plain

【操作2-2】 階級数の幅を求める


今回は、最大値287、最小値10ということで、2桁目を丸めて0と300とし、階級を300とします。
これを表現すると、

a = round(a,-2)
b = round(b,-2)

print('a is {0}, b is {1}'.format(a,b) )



f:id:dsf-kotaro:20210131161731p:plain


級数を10とすると、各階級の幅は

number_division = 10
number_class =round((a-b)/number_division,0)
print(' number of class is {0}'.format(number_class))

f:id:dsf-kotaro:20210131163312p:plain

【操作2-3】階級を設定する


0~30までの階層を作成していきます。

min_columns = np.array(list(range(b,a,number_class)))
max_columns = min_columns + number_class

min_columns = min_columns.reshape(-1,1)
max_columns = max_columns.reshape(-1,1)
class_frame = np.append(min_columns,max_columns,axis=1)

class_df = pd.DataFrame(data=class_frame,columns=['min','max'])
class_df = pd.DataFrame(data=class_frame,columns=['min','max'])
class_df['people'] = 0
class_df




f:id:dsf-kotaro:20210131172827p:plain



これでデータ格納用のデータフレームが完成しました。
あとは、分布を入れていきます。



【操作2-4】【操作2-5】度数分布表を作成する

データを格納する関数を定義します。

def sep_class(i,min_value, max_value):
  class_df.loc[i]['people']=((sample_df['minutes'] >= min_value) & (sample_df['minutes'] < max_value)).sum()
  return

各クラス階級ごとに実行します。

for i in range(len(class_df)):
  min_value = class_df.loc[i]['min']
  max_value = class_df.loc[i]['max']

  sep_class(i, min_value,max_value) 

class_df





f:id:dsf-kotaro:20210131172942p:plain



【操作2-6】ヒストグラムを作成する。






教材はエクセルですが、こちらはpythonということで、ちゃっちゃか作成します。

matplotlib のhistを使うために、numpyarrayとしてデータを保有しておきます。


hist_minutes = sample_df['minutes'].values
hist_minutes



f:id:dsf-kotaro:20210131174428p:plain


ヒストグラムを描画



plt.hist(hist_minutes, bins=number_division, range = (b,a))



f:id:dsf-kotaro:20210131174507p:plain



ということで、課題2-Xは修了です。
有難うございました。


ではでは。