Program

下面是一个小的Python程序,它通过www.example.com API获取税务数据:

import pandas as pd
import treasury_gov_pandas
# ----------------------------------------------------------------------
df = treasury_gov_pandas.update_records(
    url = 'https://api.fiscaldata.treasury.gov/services/api/fiscal_service/v1/accounting/dts/deposits_withdrawals_operating_cash')

df['record_date'] = pd.to_datetime(df['record_date'])

df['transaction_today_amt'] = pd.to_numeric(df['transaction_today_amt'])

tmp = df[(df['transaction_type'] == 'Deposits') &   ((df['transaction_catg'].str.contains('Tax'))   |   (df['transaction_catg'].str.contains('FTD')))   ]

程序正在使用以下库下载数据:

https://github.com/dharmatech/treasury-gov-pandas.py

Dataframe

下面是结果数据的样子:

>>> tmp.tail(20).drop(columns=['table_nbr', 'table_nm', 'src_line_nbr', 'record_fiscal_year', 'record_fiscal_quarter', 'record_calendar_year', 'record_calendar_quarter', 'record_calendar_month', 'record_calendar_day', 'transaction_mtd_amt', 'transaction_fytd_amt', 'transaction_catg_desc', 'account_type', 'transaction_type'])

       record_date                          transaction_catg  transaction_today_amt
371266  2024-04-03    DHS - Customs and Certain Excise Taxes                     84
371288  2024-04-03                  Taxes - Corporate Income                    237
371289  2024-04-03                   Taxes - Estate and Gift                     66
371290  2024-04-03       Taxes - Federal Unemployment (FUTA)                     10
371291  2024-04-03  Taxes - IRS Collected Estate, Gift, misc                     23
371292  2024-04-03              Taxes - Miscellaneous Excise                     41
371293  2024-04-03  Taxes - Non Withheld Ind/SECA Electronic                   1786
371294  2024-04-03       Taxes - Non Withheld Ind/SECA Other                   2315
371295  2024-04-03               Taxes - Railroad Retirement                      3
371296  2024-04-03          Taxes - Withheld Individual/FICA                  12499
371447  2024-04-04    DHS - Customs and Certain Excise Taxes                     82
371469  2024-04-04                  Taxes - Corporate Income                    288
371470  2024-04-04                   Taxes - Estate and Gift                     59
371471  2024-04-04       Taxes - Federal Unemployment (FUTA)                      8
371472  2024-04-04  Taxes - IRS Collected Estate, Gift, misc                    127
371473  2024-04-04              Taxes - Miscellaneous Excise                     17
371474  2024-04-04  Taxes - Non Withheld Ind/SECA Electronic                   1905
371475  2024-04-04       Taxes - Non Withheld Ind/SECA Other                   1092
371476  2024-04-04               Taxes - Railroad Retirement                      1
371477  2024-04-04          Taxes - Withheld Individual/FICA                   2871

该公司的数据可以追溯到2005年:

>>> tmp.drop(columns=['table_nbr', 'table_nm', 'src_line_nbr', 'record_fiscal_year', 'record_fiscal_quarter', 'record_calendar_year', 'record_calendar_quarter', 'record_calendar_month', 'record_calendar_day', 'transaction_mtd_amt', 'transaction_fytd_amt', 'transaction_catg_desc', 'account_type', 'transaction_type'])

       record_date                                   transaction_catg  transaction_today_amt
2       2005-10-03                   Customs and Certain Excise Taxes                    127
7       2005-10-03                              Estate and Gift Taxes                     74
10      2005-10-03                          FTD's Received (Table IV)                   2515
12      2005-10-03  Individual Income and Employment Taxes, Not Wi...                    353
21      2005-10-03                          FTD's Received (Table IV)                  15708
...            ...                                                ...                    ...
371473  2024-04-04                       Taxes - Miscellaneous Excise                     17
371474  2024-04-04           Taxes - Non Withheld Ind/SECA Electronic                   1905
371475  2024-04-04                Taxes - Non Withheld Ind/SECA Other                   1092
371476  2024-04-04                        Taxes - Railroad Retirement                      1
371477  2024-04-04                   Taxes - Withheld Individual/FICA                   2871

Question

我想把这些数据画成一个堆叠的条形图.

  • x轴应为'record_date'.
  • y轴应该是'transaction_today_amt'.
  • "transaction_catg"值应用于堆叠的项目.

我对任何绘图库都开放.例如matplotlib、bokeh、plotly等.

什么是实现这一点的好方法?

推荐答案

我创建了虚拟DF和测试它的工作

该代码创建了一个DataFrame,其中随机交易数据groupeddatecategory.然后pivots数据以显示堆叠条形图,其中每个条形图代表date,堆叠段代表transaction amounts用于不同类别.希望这个解决方案能帮助你的项目.

最终代码如下所示.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.dates import DayLocator

data = {
    'record_date': pd.to_datetime(['2023-10-01', '2023-10-02', '2023-10-03','2023-10-04', '2023-10-05', '2023-10-06','2023-10-07', '2023-10-08', '2023-10-09'] * 5),
    'transaction_catg': ['A', 'B', 'C', 'D', 'E'] * 9,
    'transaction_today_amt': np.random.randint(100, 1000, 45)
}
tmp = pd.DataFrame(data)

tmp_agg = tmp.groupby(['record_date', 'transaction_catg'])['transaction_today_amt'].sum().reset_index()

tmp_agg['record_date'] = tmp_agg['record_date'].dt.date

pivot_df = tmp_agg.pivot(index='record_date', columns='transaction_catg', values='transaction_today_amt').fillna(0)

ax = pivot_df.plot(kind='bar', stacked=True, figsize=(10, 6))

ax.xaxis.set_major_locator(DayLocator(interval=3))

plt.xticks(rotation=45)

plt.xlabel('Record Date')
plt.ylabel('Transaction Today Amount')
plt.title('Stacked Bar Chart of Transaction Amounts by Category and Date')

plt.show()

输出如下:

enter image description here

Python相关问答推荐

剧作家Python没有得到回应

如何计算列表列行之间的公共元素

列表上值总和最多为K(以O(log n))的最大元素数

如何标记Spacy中不包含特定符号的单词?

如何在polars(pythonapi)中解构嵌套 struct ?

如何从.cgi网站刮一张表到rame?

基于索引值的Pandas DataFrame条件填充

Python逻辑操作作为Pandas中的条件

在两极中过滤

Geopandas未返回正确的缓冲区(单位:米)

Numpyro AR(1)均值切换模型抽样不一致性

如何在Great Table中处理inf和nans

Polars map_使用多处理对UDF进行批处理

将链中的矩阵乘法应用于多组值

如果有2个或3个,则从pandas列中删除空格

Python 3试图访问在线程调用中实例化的类的对象

高效生成累积式三角矩阵

try 在单个WITH_COLUMNS_SEQ操作中链接表达式时,使用Polars数据帧时出现ComputeError

Pandas ,快速从词典栏中提取信息到新栏

将参数从另一个python脚本中传递给main(argv