ここではPandasを用いた任意の列を抽出して基礎的な統計解析を行う方法について解説しています。
この記事の対象
行ったこと
「【Python応用】「Pandas」を用いた複数のCSVファイルの結合からチャート化まで」で作成したファイルの任意の列データを抽出して、基礎的な統計解析を行ってみました。
ここでは、B列におけるデータ数、最大値、最小値、平均値、中央値、標準偏差、分散を求める方法について記しています。
プログラム
import pandas as pd
def write_sh(e_name):
#1---file読込み
file = e_name
dfs = pd.read_excel(file)
#2---任意の列取得
column_name = dfs['open']
#3---解析出力
count_res = column_name.count()#Data数
print("Data数=",count_res)
max_res = column_name.max()#最大値
print("最大値=",max_res)
min_res = column_name.min()#最小値
print("最小値=",min_res)
mean_res = column_name.mean()#平均値
print("平均値=",mean_res)
median_res = column_name.median()#中央値
print("中央値=",median_res)
std_res = column_name.std()#標準偏差
print("標準偏差=",std_res)
disper_res = column_name.var()#分散
print("分散=",disper_res)
write_sh("test.xlsx")
#Data数= 2686
#最大値= 2900.0
#最小値= 629.0
#平均値= 1719.1070364854802
#中央値= 1700.0
#標準偏差= 378.47023059637877
#分散= 143239.7154476761
上記がプログラムになります。
基礎的な統計なら数行で求められることが分かると思います。
それでは解説していきます。
#1---file読込み
file = e_name
dfs = pd.read_excel(file)
1の部分では引数でファイル名をしているので、引数を基にしてファイルを開いています。
#2---任意の列取得
column_name = dfs['open']
2の部分では読込んだデータのB列だけを抽出しています。ここでは列名が「open」なので、「’open’」を指定しています。
#3---解析出力
count_res = column_name.count()#Data数
print("Data数=",count_res)
max_res = column_name.max()#最大値
print("最大値=",max_res)
min_res = column_name.min()#最小値
print("最小値=",min_res)
mean_res = column_name.mean()#平均値
print("平均値=",mean_res)
median_res = column_name.median()#中央値
print("中央値=",median_res)
std_res = column_name.std()#標準偏差
print("標準偏差=",std_res)
disper_res = column_name.var()#分散
print("分散=",disper_res)
3の部分では解析を行っています。PandasやPythonではC言語のようにfor等を用いてデータを呼び出して計算させる必要がなく、関数になっているものを呼び出すだけで、基礎的な統計を求めることが可能です。
結果
Data数= 2686
最大値= 2900.0
最小値= 629.0
平均値= 1719.1070364854802
中央値= 1700.0
標準偏差= 378.47023059637877
分散= 143239.7154476761
上記が結果になります。
関数化しているので、様々なことに応用できると思うので良かったら使用して下さい。
df.describe()を用いた統計算出
pandasには基礎統計をまとめて算出することができる「describe()」関数があります。上記のように個別で関数を呼び出す必要がないので便利です。
Dataの雰囲気を手っ取り早く知りたい場合に用いるときに便利です。
基本的な型
df.describe(percentiles=None, include=None, exclude=None, datetime_is_numeric=False)
出力結果の項目は「count」「mean」「std」「min」「25%(1/4分位数)」「50%(中央値)」「75%(3/4分位数)」「max」「dtype」になります。
引数としては、「percentiles」は%形式の指定です。デフォルトでは25,50,75になります。「include」はDataの範囲を指定します。デフォルトでは全ての数値が含まれます。
「exclued」は除外するDataを指定します。デフォルトでは何も除外しません。
「datetime_is_numeric」は日時のDatatypeを数値として扱うかの指定です。デフォルトではFalseです。
df.describe()を用いた使用例
import pandas as pd
import numpy as np
#1---file読込み
df = pd.read_csv('test.csv')
te_col = df['open']
t = te_col.describe()
print(t)
読込むファイルは引続き同じものになります。
結果は以下の通りになります。
count 2686.000000
mean 1719.107036
std 378.470231
min 629.000000
25% 1535.000000
50% 1700.000000
75% 1928.750000
max 2900.000000
Name: open, dtype: float64