【发布时间】:2023-03-26 22:20:01
【问题描述】:
下面是一个代码 sn-p,它会得到一个从这里解压缩的 csv:https://github.com/sstangl/openpowerlifting-static/raw/gh-pages/openpowerlifting-latest.zip 到我的 JupyterLab。我正在尝试绘制从 1974 年到 2019 年每年的所有性别比例。我是 python 新手,不明白如何使用 get_gender_ratios 方法构建数据框,以便我有 2 行(男性,女性)和列将是显示每个男性和女性的比率的年份。有些年份只有男性,大多数都有。我知道我需要对数据框进行某种连接,但无法弄清楚构建它的语法。我在下面有一个 while 循环,它显示了如何使用该方法获取性别比例,但将该信息存储到数据框中是我的问题。一旦我建立了新的数据框,我想转置数据,这样我就可以做一个图来看看这些年来性别比例是如何变化的。不确定如何转置它。我知道如何绘制数据框,但从这种方法构建数据框是我卡住的地方。我已经完成了所有的研究来尝试看看我如何构建它并且没有任何运气。任何帮助表示赞赏。下面是代码 sn-p。
import pandas as pd
df = pd.read_csv("./openpowerlifting-2019-11-20/openpowerlifting-2019-11-20.csv", low_memory=False)
def get_gender_ratios(df,year):
return df.query('Date>"{}-01-01" & Date<"{}-01-01"'.format(year, year+1)).loc[:,
['Sex']].squeeze().value_counts() \
/ df.query('Date>"{}-01-01" & Date<"{}-01-01"'.format(year, year+1)).loc[:,['Sex']].shape[0]
count = 1974
while (count < 2019):
print(count)
print(get_gender_ratios(df,count))
count = count + 1
【问题讨论】:
-
好吧,你试过什么?您是否进行过任何研究,阅读过任何指南或文档?
-
我宁愿创建只有年份的列并将其与
groupby("Year")或groupby("Year", "Sex")一起使用,然后计算每个年份。它应该在一个数据框中给出结果。 -
@AlexanderCécile - 还有什么要研究的?我提供了显示我尝试过的代码。
-
Groupby 可能会有所帮助:pandas.pydata.org/pandas-docs/stable/reference/api/… 和 seaborn 非常适合绘制分类数据,其中数据框中的列指示类别:seaborn.pydata.org
标签: python pandas dataframe matplotlib