我如何计算熊猫的人口?
Posted
技术标签:
【中文标题】我如何计算熊猫的人口?【英文标题】:How can i calculate population in pandas? 【发布时间】:2019-12-13 14:52:51 【问题描述】:我有一个这样的数据集:-
S.No.,Year of birth,year of death
1, 1, 5
2, 3, 6
3, 2, -
4, 5, 7
我需要计算直到那几年的人口:-
year,population
1 1
2 2
3 3
4 3
5 4
6 3
7 2
8 1
如何在熊猫中解决它? 因为我不擅长熊猫。 任何帮助将不胜感激。
【问题讨论】:
1.使用pd.to_datetime
将年份转换为 data_time 索引。 2.然后排序你想要的年份。 3.使用df[columns].sum()
【参考方案1】:
首先必须选择year of death
的最大年份,如果不存在,则在解决方案中使用8
。
然后将year of death
的值转换为数字,并在今年之前替换缺失值。在第一个解决方案中使用birth
和death
列与Index.repeat
和GroupBy.cumcount
之间的差异,用于计数Series.value_counts
:
#if need working with years
#today_year = pd.to_datetime('now').year
today_year = 8
df['year of death'] = pd.to_numeric(df['year of death'], errors='coerce').fillna(today_year)
df = df.loc[df.index.repeat(df['year of death'].add(1).sub(df['Year of birth']).astype(int))]
df['Year of birth'] += df.groupby(level=0).cumcount()
df1 = (df['Year of birth'].value_counts()
.sort_index()
.rename_axis('year')
.reset_index(name='population'))
print (df1)
year population
0 1 1
1 2 2
2 3 3
3 4 3
4 5 4
5 6 3
6 7 2
7 8 1
另一种解决方案使用range
重复年份的列表理解:
#if need working with years
#today_year = pd.to_datetime('now').year
today_year = 8
s = pd.to_numeric(df['year of death'], errors='coerce').fillna(today_year)
L = [x for s, e in zip(df['Year of birth'], s) for x in range(s, e + 1)]
df1 = (pd.Series(L).value_counts()
.sort_index()
.rename_axis('year')
.reset_index(name='population'))
print (df1)
year population
0 1 1
1 2 2
2 3 3
3 4 3
4 5 4
5 6 3
6 7 2
7 8 1
和以前类似,只使用Counter
作为字典,用于最终DataFrame
:
from collections import Counter
#if need working with years
#today_year = pd.to_datetime('now').year
today_year = 8
s = pd.to_numeric(df['year of death'], errors='coerce').fillna(today_year)
d = Counter([x for s, e in zip(df['Year of birth'], s) for x in range(s, e + 1)])
print (d)
Counter(5: 4, 3: 3, 4: 3, 6: 3, 2: 2, 7: 2, 1: 1, 8: 1)
df1 = pd.DataFrame('year':list(d.keys()),
'population':list(d.values()))
print (df1)
year population
0 1 1
1 2 2
2 3 3
3 4 3
4 5 4
5 6 3
6 7 2
7 8 1
【讨论】:
以上是关于我如何计算熊猫的人口?的主要内容,如果未能解决你的问题,请参考以下文章