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 |