Python使用重复元素进行绘图

Python使用重复元素进行绘图,python,pandas,bar-chart,Python,Pandas,Bar Chart,我有一个包含重复项目的csv文件。重复这些项目的原因是,每一行都表示在一段时间内已支付的特定贷款。例如,ID=156的贷款已分5次支付。因此,除了付款金额和付款日期不同之外,贷款信息在每一行中重复。我想制作一个已支付贷款的柱状图,但通过计算已支付贷款的状态行来计算已支付贷款是无效的,因为它计算重复贷款。我想知道我应该如何解决这个问题 这是我的密码: loans[loans["status"]=="paid"] ["location.country"].value_counts().plot(ki

我有一个包含重复项目的csv文件。重复这些项目的原因是,每一行都表示在一段时间内已支付的特定贷款。例如,ID=156的贷款已分5次支付。因此,除了付款金额和付款日期不同之外,贷款信息在每一行中重复。我想制作一个已支付贷款的柱状图,但通过计算已支付贷款的状态行来计算已支付贷款是无效的,因为它计算重复贷款。我想知道我应该如何解决这个问题

这是我的密码:

loans[loans["status"]=="paid"] ["location.country"].value_counts().plot(kind="bar", fontsize=7)
此代码试图绘制支付贷款的国家,但正如我所说,这是不正确的,因为对于多行重复的贷款,
loans[“status”]=“paid”
可能为真,因此,
loans[loans[“status”]=“paid”][“location.country”]。value_counts()
是错误的计数

以下是数据外观的示例:

ID  status paymentAmount   paymentProcessDate     Country
156 paid     $400            2/12/2009            CountryA
156 paid     $123            2/11/2010            CountryA
156 paid     $2000           2/09/2011            CountryA
134 unpaid    Nan            2/05/2013            CountryB
134 unpaid    Nan            2/07/2013            CountryB

这里有一种方法可以过滤掉已经支付的
ID
s

import pandas as pd
from io import StringIO

df = pd.DataFrame.from_csv(StringIO('''ID  status paymentAmount   paymentProcessDate     Country
156 paid     $400            2/12/2009            CountryA
156 paid     $123            2/11/2010            CountryA
156 paid     $2000           2/09/2011            CountryA
134 unpaid    Nan            2/05/2013            CountryB
134 unpaid    Nan            2/07/2013            CountryB'''), sep=r' +')

paid_ids = df[df.status=='paid'].ID.drop_duplicates()

unpaid = df[~df.ID.isin(paid_ids)]

unpaid.Country.value_counts().plot(kind='bar')

你能举个例子吗?@lanS我更新了这个问题。你可以按
ID
进行分组,然后你可以确保每次贷款只计算一次。这不起作用。实际上,数据的实际格式有100多列,所以为了简单起见,我不想把它们全部放在这里。当我想读取csv文件时,我无法输入所有列的名称。我假设您已经加载了数据;如果将
df
替换为
loans
后三条语句应该可以执行您想要的操作。我加载的方式是pd.read_csv(),因此没有字段ID。因此,paid_ID=df[df.status=='paid'].ID.drop_duplicates()抛出错误我假设它发生在另一个名称下?如果是这样,您可以调整示例,我将编辑答案。假设我使用此语法loans[“status”]而不是loans.status。AttributeError:“DataFrame”对象没有属性“ID”paid\u ID=loans[loans[“status”]=“paid]”。ID