迷走ブログ

ファウスト的衝動を抱き、迷走している、凡人による気まぐれブログです。

【python】日向坂46さんの身長を含む基本的なデータを可視化してみた

はじめに

前回、乃木坂46さんに関して、身長等をまとめてみました。
そこで、今回は姉妹グループである日向坂46さんについて分析したいと思います。なお前回行った操作とほぼ変わらないため、今回は過程をすっ飛ばして、可視化部分に注力しました。

行ったこと

前回と同様ですが、以下の流れを取りました。

  • WEBから日向坂46さんに所属している方々のデータを集める(今回もWikiからコピペ)
  • エクセル形式でデータを読み込み、そのデータを軽く加工
  • データを可視化

コードについて

import pandas as pd
import matplotlib.pyplot as plt
import plotly.express as px

df = pd.read_excel("hina.xlsx",encoding="utf-8")
df.columns = df.loc[0] #データのカラム名を0行名に指定
df.head()

f:id:yktmmrmtoosa03:20210923212937j:plain
まず、必要となりそうな諸々のモジュールを読み込みます。
イメージとしてはpandas で加工し、matplotlib、poorlyで可視化を試みる、という流れです。

次に、エクセル形式で保存したデータを読み込みました。ただし、前回同様に、邪魔な列が読み込まれてしまいました。

df.drop('Unnamed: 0',axis=1,inplace=True)
df.head()

ここでは邪魔な「Unnamed: 0」を削除しました。

問題は、前回同様に「身長」と「生年月日」の部分から数値を取り出すことです。
そのため、それらをstr.split()を使って、それぞれを分解しました。

var_data = df['身長'].str.split('cm',expand=True)
var_data.head()

f:id:yktmmrmtoosa03:20210923213328j:plain
上述の通り、ここでは、数値だけを残すために操作しました。
ただ、replace()を使って、いらない部分だけを空白に入れ替えればすむ話だったと今更ながら思いました。。。分割してしまったため、空白の列ができてしまいミスりました。そのため、それらをdrop()で削除することとなりました。。。

同様に生年月日の部分も分解しました。今回はほぼ同じコードとなるため、分割したコードは省略します。その後、カラム名をつけて、元のデータと結合します。

var_data.columns = ['歳']
df = pd.concat([var_data,df],axis=1)
df.drop(['生年月日'],axis=1,inplace=True)
df.head()

f:id:yktmmrmtoosa03:20210923214446j:plain
わーい(⌒▽⌒)
とりあえず、データの加工が完了したことにします。
次に、基本的な統計量について確認していきます。

df.describe().round(1)

f:id:yktmmrmtoosa03:20210923233645j:plain
平均身長は、160cmのようです。また、平均年齢は20.6歳のようです。
前回、乃木坂46さんの情報を分析した際には、161cmくらいだったはずなので、坂道(?)アイドルでは160cm前後が平均なのでしょうかね。

import plotly.express as px
fig = px.scatter(df, x='加入期', y='歳')
fig.show()

f:id:yktmmrmtoosa03:20210923225031j:plain
1、2、3期と段階的に若い人たちが集まっているようです。
3期生は、17歳なんて、鬼若いですねー(死語???)

運営会社は、しっかりと世代交代を意識して人選しているようですね。

fig = px.scatter(df, x='加入期', y='身長(cm)',size='歳')
fig.show()

f:id:yktmmrmtoosa03:20210923225828j:plain
加入期ごとで身長の差異を見てみました。
特に傾向があるようには見えませんが、背の高い方から低い方まで幅広く在籍していらっしゃるようですね。そう言った意味では、運営会社は需要者の多様な趣味嗜好に合致するような人選をしているとも言えそうですね。

import plotly.express as px
fig = px.scatter(df, x='身長(cm)', y='歳',color='加入期',size='歳', hover_data=['身長(cm)'])
fig.show()

f:id:yktmmrmtoosa03:20210923230558j:plain
・・・特に言及なしです。

おわりに

とりあえず、pythonの勉強を頑張って、仕事で使えるレベルにします!!!
データの加工と可視化をスムーズに行えるように頑張るしかない!
俺(たち)の戦いはこれからだ!!!(笑)