我有一个包含重复项目的csv文件。重复项目的原因是每一行都表示在时间内支付的特定贷款。例如,ID = 156的贷款已经支付了5笔款项。因此除了支付金额和支付日期不同之外,每行重复贷款信息。我想制作一份有偿贷款的条形图,但是通过计算他们的状态支付的行数来计算已付款的贷款,因为它计算重复贷款。我想知道如何解决这个问题。
这是我的代码:
loans[loans["status"]=="paid"] ["location.country"].value_counts().plot(kind="bar", fontsize=7)
此代码试图绘制支付贷款的国家,但正如我所说,这是不正确的,因为loans["status"]=="paid"
对于多行重复的贷款可能为TRUE,因此,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
答案 0 :(得分:2)
以下是过滤掉已经支付的ID
的一种方法。
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')