【コピペで使えます】データ分析初手の初手【Python】
この記事を読むとできるようになること
pandasを使ってデータを読み込むことができるようになる
ヒストグラムと箱髭図でデータの分布を確認できるようになる
基本的な統計量をコード一発で計算出来るようになる
それをエクセルファイルに出力する
みなさんこんにちは。
昨今機械学習やAIの分野で注目されているPythonですが実はデータの分析、加工、可視化…etc にとても便利なプログラミング言語です。
エクセルファイルやcsvで保存されているデータを分析する事って結構ありますよね。今日はPythonのpandasというライブラリを使ってデータを分析する最初の最初の部分をやります。
使用するライブラリの読み込み
import pandas as pd #今回の主役データ処理ライブラリ
import matplotlib.pyplot as plt #図の描画用
import seaborn as sns #図の描画用2
使用するデータの読み込み
# データのロード
df = sns.load_dataset('tips')
今回はseabornに入っているtipsという有名なデータセットを拝借します。
お手持ちのデータでやりたい場合は以下を実行下さい
#CSVデータを読み込みたい時
df = pd.read_csv("ここにファイル名.csv")
#xlsxデータを読み込みたい時
df = pd.read_excel("ここにファイル名.xlsx")
df = XXX
という書き方はデータ分析の世界では一般的な書き方で
データフレームの略でdfと書くことが多いです。
df はXXX.csv/xlsxファイルだよ。とここで定義することでpythonで扱えるようになります。
読み込んだデータを確認する
dfと打つだけです
df
読み込んだTipsのデータが表示されました。
244行×7列のデータになっていることがわかります。
データ左から
total_bill =支払い総額
tip = 払ったチップの額
sex = 性別
smoker = 喫煙者かどうか
day = 曜日
time = 食事をした時間
size = これちょっとわかりませんが人数としましょうか
今回はチップの支払額とお客さんの特徴に関連があるか調べる分析します
補足:この時点で大切な思考
Pythonでガチャガチャやる前に自分なりの仮説を立てましょう。
例えば男性は見栄っ張りだからチップを多く払うのではないか?
晩ご飯の方がお金使うからその分チップも多そうだなあ。
みたいなことです。求めるアウトプットに対して筋のいい仮説を立てることは大切ですよみなさん
次にヒストグラムでチップの支払いがどの様になっているかを確認します
sns.displot(df['tip']) #チップの分布をヒストグラムで表示する
plt.savefig("dist.png", dpi = 500) #画像を保存する
これをみると3〜4ドルくらいのチップを払っている層が多いとざっくり把握できます。
ちなみに以下のように書くと場合わけをして出力してくれます
hue = という引数の後に分類したい対象(下の場合はsex)を入力
まずは男女の差
#男女の差を見たい時
sns.displot(data=df, x="tip",hue="sex", height=4, aspect=.7)
続いて時間帯の差
#時間帯の差を見たい時
sns.displot(data=df, x="tip",hue="time", height=4, aspect=.7)
では次に箱髭図を描いてみましょう
sns.boxplot(data=df, x='tip', y="sex" ) #男女で分けた箱髭図
sns.boxplot(data=df, x='tip', y="time") #時間帯で分けた箱髭図
男女の差を箱髭図で見てみる
時間帯の差を箱髭図で見てみる
これらをみると
男性が多めに払う傾向があるが中央値に差はあまりない
Dinner時に10ドル近くチップを払った太っ腹なお客がいた
ということがざっと把握できます。
データの統計量を計算しよう
読み込んだデータフレームの平均、中央値、最大最小等を一発で出力します
df.describe()
コードを一行書くだけで
データの数
平均値
標準偏差
最大小
四分位点
をまとめて出力してくれます。
これを初手でかますことで大まかにデータを把握できるのと、
明らかな外れ値がないかチェックできます。
例えばチップで1,000ドル支払ってる人がいたらおかしいので、入力ミスが
あったのではないかと推察できます。
誤ったデータからは正しい分析はできないのでここは入念にみましょう
データの統計量をエクセルに出力する
先ほどの統計量データはエクセルに以下のコードで出力出来ます。
df_describe = df.describe()
df_describe.to_excel("df_describe.xlsx")
無事に出力出来ました。
本日はここまでです。読んでいただきありがとうございました。
この記事が気に入ったらサポートをしてみませんか?