Python 如何使用matplotlib.pyplot打印列表?
为什么我得到一个TypeError:unhabable type:numpy.ndarray错误?另外,我不记得将numpy导入到我的代码I中。numpy.ndarray在做什么?错误在代码的最后一行Python 如何使用matplotlib.pyplot打印列表?,python,Python,为什么我得到一个TypeError:unhabable type:numpy.ndarray错误?另外,我不记得将numpy导入到我的代码I中。numpy.ndarray在做什么?错误在代码的最后一行 import pandas as pd import matplotlib.pyplot as plt entries_csv = "C:\\Users\\Asus\\Desktop\\Entries.csv" listofaccounts_csv = "C:\\Users\\Asus\\Des
import pandas as pd
import matplotlib.pyplot as plt
entries_csv = "C:\\Users\\Asus\\Desktop\\Entries.csv"
listofaccounts_csv = "C:\\Users\\Asus\\Desktop\\List of Accounts.csv"
data_entries = pd.read_csv(entries_csv)
data_listofaccounts = pd.read_csv(listofaccounts_csv)
i = 0
summary_name = [0]*len(data_listofaccounts)
summary = [0]*1*len(data_listofaccounts)
for account_name in data_listofaccounts['Account Name']:
summary_name[i] = account_name
for debit_account in data_entries['DEBIT ACCOUNT']:
if account_name == debit_account:
summary[i] += data_entries['DEBIT AMOUNT']
i += 1
plt.bar(list(summary_name), list(summary))
以下是数据:
一,。参赛作品:
二,。帐户清单:
基本上,对于账户列表中的每一项,我想做一个总结,其中每种类型的账户的所有借方金额都将合计我认为在这种情况下,您确实需要在两个数据帧之间利用pd.merge功能。请参见此处:。加入两个表后,您需要根据帐户名分组并执行聚合。例如:
list_of_accounts_df = pd.DataFrame({
'Account Name': ['ACCOUNT PAYABLE', 'OUTSIDE SERVICE'],
'Type': ['CURRENT LIABILITY', 'EXPENSE']
})
entries_df = pd.DataFrame({
'DEBIT ACCOUNT':['OUTSIDE SERVICE', 'OUTSIDE SERVICE'],
'DEBIT AMOUNT': [46375.8, 42091.42] ,
'CREDIT ACCOUNT':['CASH IN BANK', 'CASH ON HAND'],
'CREDIT AMOUNT':[46375.8, 42091.42]
})
pd.merge(list_of_accounts_df, entries_df, left_on='Account Name', right_on='DEBIT ACCOUNT', how='left').fillna(0).groupby('Account Name')['DEBIT AMOUNT'].sum()
输出成为一个系列,其中每个索引是帐户名称,值是该系列所有借方金额的总和。因此,在这种情况下:
Account Name
ACCOUNT PAYABLE 0.00
OUTSIDE SERVICE 88467.22
关于如何绘制的问题,对于条形图,不能直接提供x轴或y轴的字符串值
使用以下示例:,在本例中,您可以执行以下操作:
objects = x.index.values
y_pos = range(len(objects)
vals = x.values
plt.bar(y_pos, vals, align='center')
plt.xticks(y_pos, objects)
plt.ylabel('Sum of Debits')
plt.title('Total Debits Per Account')
plt.show()
这在我们的简单示例中给出:
list_of_accounts_df = pd.DataFrame({
'Account Name': ['ACCOUNT PAYABLE', 'OUTSIDE SERVICE'],
'Type': ['CURRENT LIABILITY', 'EXPENSE']
})
entries_df = pd.DataFrame({
'DEBIT ACCOUNT':['OUTSIDE SERVICE', 'OUTSIDE SERVICE'],
'DEBIT AMOUNT': [46375.8, 42091.42] ,
'CREDIT ACCOUNT':['CASH IN BANK', 'CASH ON HAND'],
'CREDIT AMOUNT':[46375.8, 42091.42]
})
pd.merge(list_of_accounts_df, entries_df, left_on='Account Name', right_on='DEBIT ACCOUNT', how='left').fillna(0).groupby('Account Name')['DEBIT AMOUNT'].sum()
您是否有机会上传一个条目示例和帐户列表?这将有助于更好地了解你正在尝试做什么。与您的具体问题无关,我认为很多嵌套for循环都可以用pandas完成。@lhay86当然可以。我实际上是想写一份报告。我将上传数据集。我还怀疑您希望将summary_name[I]=data_listofaccounts['Account name']更改为summary_name[I]=Account_name,同样地,summary[I]+=data_entries['DEBIT AMOUNT']更改为summary[I]+=借记账户但如果没有你的代码示例,我无法确定。哦,等一下,我会解决的。以后不要复制/粘贴屏幕截图,而是复制/粘贴几行文本。我希望我不是学究,我最近才活跃在这个社区,并发现如果人们很容易在他们的计算机上复制错误,他们会乐于提供帮助