Python Pandas用重复元素绘制

时间:2016-05-19 14:33:50

标签: python pandas bar-chart

我有一个包含重复项目的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

1 个答案:

答案 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')