ヅカの芸名を自動生成するAIを作る(2)：データ解析編

# これまでのあらすじ

[こちら](https://qiita.com/muto-jo/items/79c41aa2fb8ff27c047c)を参照

宝塚の芸名を自動生成するAIを作るのが目標。
Wikipediaから宝塚の生徒一覧の名前を集めたところ。

記事を書いた後で収録漏れに気づいて、全期分の収録漏れチェックや、NameDividerによる姓名分離の修正に結構手間かかった…

# 今回やること

* 宝塚の生徒一覧をpandas.DataFrameに取り込む
* 少し解析してみる

# DataFrameに取り込み

```Python
import pandas as pd

#定数
MAX_PERIOD = 108
NAME_TEMP = "takaraduka_actress/takaraduka_actress_{}period.csv"

actress_data = pd.DataFrame()

for i in  range(MAX_PERIOD):
    period = i + 1
    try:
        period_data = pd.read_csv(NAME_TEMP.format(period))
        period_data.insert(0, '期', period)
        actress_data = pd.concat([actress_data, period_data])
    except FileNotFoundError:
        print('{} period is none'.format(period))
```

```output
期	芸名	読み仮名	誕生日	出身地	出身校	芸名の由来	愛称	役柄	配属	退団年	備考	身長
0	1	秋田 衣子	あきた きぬこ	NaN	NaN	NaN	百人一首	NaN	NaN	-	不明	妹は瀧川末子	NaN
1	1	大江 文子	おおえ ふみこ	2月20日	大阪府大阪市	NaN	百人一首	NaN	男女両役	-	1921年	NaN	NaN
2	1	逢坂 關子	おおさか せきこ	8月2日	大阪府	NaN	百人一首	NaN	娘役	-	1929年	NaN	NaN
3	1	小倉 みゆき	おぐら みゆき	2月20日	鹿児島県	NaN	百人一首	NaN	男役	-	1919年	NaN	NaN
4	1	雄嶋 艶子	おじま つやこ	NaN	NaN	NaN	百人一首	NaN	NaN	-	不明	女優・二條玉子	NaN
...	...	...	...	...	...	...	...	...	...	...	...	...	...
33	108	朝比奈 天	あさひな てん	10月27日	兵庫県神戸市	愛徳学園中学	NaN	てん	男役	宙組	NaN	NaN	173㎝
34	108	桜之 真緒	さくらの まお	3月1日	岡山県真庭市	就実高校	NaN	さっくん、マーチ	男役	月組	NaN	NaN	173㎝
35	108	華路 らら	はなみち らら	12月9日	大阪府高槻市	市立第二中学	NaN	らぁ、らら	娘役	花組	NaN	NaN	165㎝
36	108	風希 咲玖	かざき さく	12月17日	兵庫県西宮市	梅花高校	NaN	かざき	男役	星組	NaN	NaN	175㎝
37	108	白霧 椿	しらぎり つばき	10月1日	大阪府大阪市	帝塚山学院高校	NaN	くー、ヒデキ	男役	月組	NaN	NaN	176㎝
4740 rows × 13 columns
```

# 芸名の解析

```Python
name = actress_data['芸名'].str.split(' ', expand = True)
name.rename(columns = {0:'姓', 1:'名'}, inplace=True)
```

まず芸名を姓名に分離したDataFrameを作成し、これをもとに解析していく。

単純にdescribe()してみた結果は以下。

```
           姓     名
count   4740  4740
unique  3130  2420
top        泉   ひかる
freq      11    34
```

姓の方がユニーク性が高い。
なお「泉 ひかる」さんは存在しなかった。

# 姓の解析

## 多い姓

```Python
for row in name['姓'].value_counts().iteritems():
    print(row)
```

Top10までを出そうとしたら、同順位がそれなりにあったため、8人以上いる姓のみ抜き出す。

|姓|出現回数|
|:-:|:-:|
|'泉'| 11|
|'東'| 11|
|'渚'| 10|
|'紅'| 10|
|'大和'| 10|
|'曙'| 10|
|'園'| 9|
|'暁'| 8|
|'麗'| 8|
|'紫'| 8|
|'摩耶'| 8|
|'葵'| 8|
|'橘'| 8|
|'白鳥'| 8|
|'若草'| 8|
|'蘭'| 8|

実際にありそうな姓（泉、東、橘など）もあれば、創作でしかみないような姓（紅、暁、麗など。実在するかも知らんが…）もある。

どの程度重複しているのかを確認してみた。

```Python
name['姓'].value_counts().value_counts(normalize = True, sort = False)
```
```
11    0.000639
10    0.001278
9     0.000319
8     0.002875
7     0.004792
6     0.007029
5     0.015335
4     0.028754
3     0.055911
2     0.150479
1     0.732588
Name: 姓, dtype: float64
```

重複なしが全体の７割強で概ねユニークなようだ。

上の8人以上重複している姓を見ていて気になったのが、紅・紫といった色、東と方角の姓。
色と方角など気になるジャンルを調べてみたい

### 色
|色|出現回数|
|:-:|:-:|
|白|1|
|黒|0|
|赤|0|
|緑|2|
|青|1|
|黄|0|
|紫|8|
|金|0|
|銀|3|
|銅|0|
|紅|10|
|蒼|0|
|紺|1|
|碧|2|

「銀」はいずれも「しろがね」読みであった。
紅と紫がぶっちぎりで人気である。

### 方角

|方角|出現回数|
|:-:|:-:|
|東|11|
|西|0|
|南|7|
|北|2|

「東」はいずれも「あずま」読みである。
東西南北姓は、７７期の「南 しずか」さんが最後なので、ここ30年いない。

### 植物

|植物|出現回数|
|:-:|:-:|
|桜|6|
|桃|1|
|葵|8|
|橘|8|
|藤|6|
|梅|0|
|花|4|
|華|4|
|木|0|
|樹|0|

日本人らしい「桜」は複数人いるが、葵・橘ほどではなく、やや古風な感のある「藤」と同数である。
「桜」は４１〜８５期、「藤」は２９〜５６期なので、桜の方が現代的な姓のようだ。

「樹」は男役でいそうな気はしたので、いないのは意外。

### 季節

|季節|出現回数|
|:-:|:-:|
|春|4|
|夏|5|
|秋|3|
|冬|0|

冬の人気がない。春、夏は回数が多いので、暖かい・明るいイメージのある季節の方がいいのだろうか。

### 自然

|要素|出現回数|
|:-:|:-:|
|鳥|0|
|風|2|
|月|2|
|雪|2|
|水|2|
|土|0|
|火|0|
|日|0|
|陽|1|
|陸|0|
|大地|1|
|海|2|
|空|4|
|宙|0|
|星|7|
|雨|0|
|霧|0|
|霰|0|
|嵐|2|
|雲|0|
|霙|0|
|霜|0|

花鳥風月、雪月花、四元素（水、風、火、土）、日（月があるので対比、＋陽）、陸海空（＋大地、宇宙の意で宙）、星（宝塚の組名にある。他の花組、月組、雪組、宙組は前述に含まれる）のうち、すでに調査済みのものを除く。

## 姓に含まれる文字

姓を一つずつ取り出し、使われている文字をカウントする

```Python
d = dict()
for index, data in name['姓'].iteritems():
    for s in data:
        d.setdefault(s, 0)
        d[s] = d[s] + 1
d2 = sorted(d.items(), key = lambda  x : x[1], reverse = True)
```

使われている文字の総数は、850字あった。

50回以上使われている文字のみ記載する

```
[('美', 203),
 ('月', 197),
 ('花', 174),
 ('城', 155),
 ('野', 145),
 ('千', 128),
 ('路', 107),
 ('風', 98),
 ('乃', 97),
 ('大', 92),
 ('山', 92),
 ('川', 91),
 ('真', 86),
 ('高', 84),
 ('白', 80),
 ('水', 80),
 ('海', 80),
 ('里', 73),
 ('朝', 72),
 ('原', 69),
 ('華', 69),
 ('若', 68),
 ('夏', 67),
 ('咲', 67),
 ('波', 66),
 ('小', 65),
 ('羽', 65),
 ('奈', 64),
 ('瀬', 62),
 ('松', 60),
 ('春', 58),
 ('木', 58),
 ('愛', 58),
 ('麻', 58),
 ('天', 56),
 ('香', 55),
 ('彩', 54),
 ('音', 53),
 ('三', 51),
 ('園', 51),
 ('宮', 51),
 ('輝', 51),
```

先ほどの気になって調べた姓の出現回数はほとんど一文字姓だが、その漢字の出現率をついでに調べよう。

|文字|文字＝姓個数|出現回数|
|:-:|:-:|:-:|
|白|1|80|
|黒|0|5|
|赤|0|2|
|緑|2|8|
|青|1|25|
|黄|0|0|
|紫|8|48|
|金|0|0|
|銀|3|5|
|銅|0|0|
|紅|10|18|
|蒼|0|10|
|紺|1|2|
|碧|2|15|
||||
|東|11|28|
|西|0|3|
|南|7|47|
|北|2|15|
||||
|桜|6|33|
|桃|1|13|
|葵|8|8|
|橘|8|9|
|藤|6|30|
|梅|0|12|
|花|4|174|
|華|4|69|
|木|0|58|
|樹|0|42|
||||
|春|4|58|
|夏|5|67|
|秋|3|36|
|冬|0|3|
||||
|鳥|0|39|
|風|2|98|
|月|2|197|
|雪|2|35|
|水|2|80|
|土|0|2|
|火|0|2|
|日|0|36|
|陽|1|16|
|陸|0|1|
|(大)地|1|9|
|海|2|80|
|空|4|35|
|宙|0|3|
|星|0|45|
|雨|0|6|
|霧|0|26|
|霰|0|0|
|嵐|2|3|
|雲|0|30|
|霙|0|0|
|霜|0|2|

なかなか興味深い

色だが、「白」は使用率が高い。純潔なイメージだろうか。「紫」も使用率が高い。宝塚のシンボルすみれの花が紫だからか？
「青」は「蒼」も使われるが、「赤」は「紅」しかほぼ使われない。「緑」は「碧」の方が多い。
「金」は実際の姓では珍しくない文字だが、一切使われていない。煌びやかなイメージはあるはずだが、逆に悪趣味なのかもしれない。

東西南北では、なぜか「西」の人気が際立って低く、「南」の人気が高い。どうも「南」はヅカの芸名でよく使われる他の文字と組み合わせやすいようだ。
他の３方角は組み合わせやすさは似たり寄ったりだと思うのだが、なぜか「東」が高い。

植物だと、女性らしさがあるからか、「花」「華」は使用頻度が高い。単独では使わない「木」「樹」も増える。

季節は、やはり「春」「夏」は高いが、「冬」が低い。方角で「北」が少ないことと相関があるのだろうか？

自然は、大地は「地」としてカウントした。
「風」「月」「水」のカウントが高く、「火」「土」「陸」「地」は低い。「火」が低いのは「火」には暖かいイメージより、熱いなど暴力的なイメージがあるからだろうか。「土」「陸」「地」などは華やかでないイメージがあるのだろう。
「月」は頻度が高いが、「日」「陽」は低い。一般的に「陽」の字は女性名に用いられるが（感覚的には夜をイメージする「月」より多そうだ）。
「風」「空」「雲」「鳥」がそれなりに使われているのは、自由のイメージかと思う。
「水」「海」ともに高い。透明なイメージと他の文字との組み合わせやすさだろうか。

# 名の解析

名の解析はさっくり行きたいと思う。
解析したコードは姓とほぼ同じなので省略する。

## 多い名

|名|出現回数|
|:-:|:-:|
|'ひかる'| 34|
|'薫'| 24|
|'ゆかり'| 24|
|'京子'| 24|
|'まり'| 24|
|'のぼる'| 22|
|'みどり'| 21|
|'かほる'| 20|
|'ひとみ'| 19|
|'みちる'| 19|

ひらがなに開いているとはいえ、存外普通の名前が多い。

「京子」、「のぼる」、「かほる」は、ここ数十年はなく、一昔前の名前であることが伺われる。
それ以外は比較的どの年代にも出てくるが、年代が偏ることもある。例えば「ひとみ」はここ20年では少なく（有名なのはトヨタの御曹司と結婚し、民放ドラマにも出ていた「星蘭ひとみ」さんだろうか）、40期代〜70期代に多い。

重複率は次のとおり。

```
34    0.000413
24    0.001653
22    0.000413
21    0.000413
20    0.000413
19    0.000826
18    0.000413
17    0.001240
16    0.000826
15    0.000826
14    0.000826
13    0.001653
12    0.001240
11    0.002479
10    0.004545
9     0.007851
8     0.005785
7     0.010331
6     0.015289
5     0.018595
4     0.043388
3     0.059917
2     0.140496
1     0.680165
```

やはりユニーク性は高い。が、姓ほどではないようだ。

## 名に含まれる文字

姓と同じく、50回以上使われている文字のみ記載する

```
[('子', 1144),
 ('み', 434),
 ('か', 366),
 ('り', 350),
 ('美', 344),
 ('る', 287),
 ('千', 225),
 ('ゆ', 224),
 ('さ', 205),
 ('ま', 181),
 ('あ', 177),
 ('い', 175),
 ('き', 172),
 ('ら', 168),
 ('ひ', 157),
 ('な', 133),
 ('代', 110),
 ('の', 107),
 ('つ', 107),
 ('里', 104),
 ('と', 103),
 ('し', 93),
 ('真', 92),
 ('れ', 87),
 ('ち', 84),
 ('や', 82),
 ('う', 75),
 ('ほ', 71),
 ('花', 69),
 ('お', 63),
 ('は', 62),
 ('ん', 61),
 ('た', 60),
 ('す', 57),
 ('く', 57),
 ('奈', 55),
 ('香', 54),
 ('こ', 54),
 ('由', 53),
 ('希', 50),
```

圧倒的ひらがな…

子については、各期ごとの出現回数をプロットしてみた

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/343307/3d8a79dd-f7c2-dc37-f9d2-140839f4cd30.png)

20期(1930年入団)から27期(1937年入団)にかけてピークを迎え、その後激減。
51期(1965年入団)からは10人満たなくなり、73期(1987年入団)からはほぼ絶滅、95期(2005年入団)以降は一人もいない。

姓の時も思ったが、各10年代ごとの姓名や使われている文字の傾向を調べてみたいが、本記事は一旦ここまでにする。

思ったより解析・分析が面白いので、解析編がまだ続く。続きは[こちら](https://qiita.com/muto-jo/items/a2d03c1e07b78b84b51b)