import pandas as pd
data = pd.read_csv('D:/Data/2016/megaciv_cities.csv', delim_whitespace=True)
data = data.rename(columns={'人口上限':'農業なし/人口上限'})
data['農業あり/人口上限'] = data['農業なし/人口上限'].apply(lambda x: x+1 if x<=2 else x)
data['農業なし/人口増加力'] = data['農業なし/人口上限'].apply(lambda x: 2 if x>2 else x)
data['農業あり/人口増加力'] = data['農業あり/人口上限'].apply(lambda x: 2 if x>2 else x)
data
| 文明名 | 都市名 | 農業なし/人口上限 | 都市用地 | 沿岸 | 火山 | 氾濫原 | 農業あり/人口上限 | 農業なし/人口増加力 | 農業あり/人口増加力 | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | ケルト | Caledonia | 0 | False | True | False | False | 1 | 0 | 1 |
| 1 | ケルト | Hibernia | 1 | False | True | False | False | 2 | 1 | 2 |
| 2 | ケルト | Britannia | 1 | False | True | False | False | 2 | 1 | 2 |
| 3 | ケルト | Dyfed | 1 | False | True | False | False | 2 | 1 | 2 |
| 4 | ケルト | Londinium | 1 | True | True | False | False | 2 | 1 | 2 |
| 5 | ケルト | Lugdunensis | 2 | False | True | False | False | 3 | 2 | 2 |
| 6 | ケルト | Belcica | 2 | False | True | False | False | 3 | 2 | 2 |
| 7 | ケルト | Alesia | 1 | True | False | False | False | 2 | 1 | 2 |
| 8 | ケルト | GermaniaInferior | 2 | False | True | False | False | 3 | 2 | 2 |
| 9 | ケルト | GermaniaSuperior | 2 | True | False | False | False | 3 | 2 | 2 |
| 10 | ケルト | UpperAhine | 1 | True | False | False | False | 2 | 1 | 2 |
| 11 | ケルト | Lugdunum | 1 | True | False | False | False | 2 | 1 | 2 |
| 12 | ケルト | Ultimathule | 0 | False | True | False | False | 1 | 0 | 1 |
| 13 | ケルト | GermaniaMagna | 2 | False | True | False | False | 3 | 2 | 2 |
| 14 | ケルト | Norcum | 1 | False | False | False | False | 2 | 1 | 2 |
| 15 | ケルト | UpperDanuse | 3 | False | False | False | False | 3 | 2 | 2 |
| 16 | ケルト | Lucia | 1 | False | True | False | False | 2 | 1 | 2 |
| 17 | ケルト | Sudeten | 2 | False | False | False | False | 3 | 2 | 2 |
| 18 | ケルト | WesternSermatia | 1 | False | False | False | False | 2 | 1 | 2 |
| 19 | ケルト | EeasternSarmatia | 1 | False | False | False | False | 2 | 1 | 2 |
| 20 | ケルト | Seythia | 2 | False | True | False | False | 3 | 2 | 2 |
| 21 | ケルト | NortheanWaites | 0 | False | True | False | False | 1 | 0 | 1 |
| 22 | イベリア | Aquitania | 3 | False | True | False | False | 3 | 2 | 2 |
| 23 | イベリア | AquaiMextlae | 3 | True | True | False | True | 3 | 2 | 2 |
| 24 | イベリア | Narbo | 2 | True | True | False | False | 3 | 2 | 2 |
| 25 | イベリア | Iberus | 2 | False | True | False | False | 3 | 2 | 2 |
| 26 | イベリア | CarthacoNova | 2 | True | True | False | False | 3 | 2 | 2 |
| 27 | イベリア | Cordova | 2 | True | True | False | False | 3 | 2 | 2 |
| 28 | イベリア | Lusitania | 2 | True | True | False | False | 3 | 2 | 2 |
| 29 | イベリア | Callaecla | 2 | False | True | False | False | 3 | 2 | 2 |
| 30 | イベリア | Cluniensis | 2 | False | True | False | False | 3 | 2 | 2 |
| 31 | イベリア | Caelakaugustanus | 1 | False | True | False | False | 2 | 1 | 2 |
| 32 | イベリア | Carthaginensis | 1 | False | False | False | False | 2 | 1 | 2 |
| 33 | イベリア | Emeritensis | 1 | False | False | False | False | 2 | 1 | 2 |
| 34 | イベリア | Bairarks | 2 | False | True | False | False | 3 | 2 | 2 |
| 35 | イベリア | WesternMavaetania | 1 | False | True | False | False | 2 | 1 | 2 |
| 36 | イベリア | WesternCetules0 | 1 | False | True | False | False | 2 | 1 | 2 |
data['タイル総数'] = 1
result = data.groupby('文明名').sum()
result = result.ix[:, ['都市用地', '沿岸', '火山', '氾濫原', '農業なし/人口増加力', '農業なし/人口上限', '農業あり/人口増加力', '農業あり/人口上限', 'タイル総数']]
result
| 都市用地 | 沿岸 | 火山 | 氾濫原 | 農業なし/人口増加力 | 農業なし/人口上限 | 農業あり/人口増加力 | 農業あり/人口上限 | タイル総数 | |
|---|---|---|---|---|---|---|---|---|---|
| 文明名 | |||||||||
| イベリア | 5.0 | 13.0 | 0.0 | 1.0 | 25 | 27 | 30 | 40 | 15 |
| ケルト | 5.0 | 13.0 | 0.0 | 0.0 | 27 | 28 | 41 | 49 | 22 |
# タイル性能概要
data.groupby(['文明名', '都市用地', '農業なし/人口上限']).count()[['都市名']].unstack(level=[1,2]).sortlevel([0,1], axis=1).fillna(0)
| 都市名 | |||||||
|---|---|---|---|---|---|---|---|
| 都市用地 | False | True | |||||
| 農業なし/人口上限 | 0 | 1 | 2 | 3 | 1 | 2 | 3 |
| 文明名 | |||||||
| イベリア | 0.0 | 5.0 | 4.0 | 1.0 | 0.0 | 4.0 | 1.0 |
| ケルト | 3.0 | 7.0 | 6.0 | 1.0 | 4.0 | 1.0 | 0.0 |