gpt4 book ai didi

python - Pandas/matplotlib 并未绘制所有列数据

转载 作者:行者123 更新时间:2023-12-05 03:05:48 25 4
gpt4 key购买 nike

我有一个名为“blah”的数据框,它是这样创建的:

blah = pandas.read_csv(address, index_col='Date', parse_dates=True)
blah.head()
TransactionName Withdrawal Deposit Total
Date
2016-12-01 PTS TO: ####### 10.00 NaN 2612.27
2016-12-01 ############### 250.00 NaN 2362.27
2016-12-01 SSV TO: ########### 1.00 NaN 2361.27
2016-12-01 ############### 62.86 NaN 2298.41
2016-12-02 SSV TO: ########### 2.00 NaN 2296.41

我想根据日期绘制存款。有大约 790 行 Deposit,只有 57 行有值,其他所有内容都在“NaN”中。

blah['Deposit'].plot()

该命令输出此图: Crappy plot

问题是这个地 block 上没有所有存款。如果我创建一个系列,然后删除所有 NaN 并绘制它,一切都很好:

derp = blah['Deposit'].dropna()
derp.plot()

在这里您可以看到所有存款事件。请注意 2017-12 之后未出现在原始文件中的存款。 Good plot

为什么不是所有值都绘制在第一种情况下?如果我在没有将 Date 设置为索引列的情况下创建“blah”。问题仍然存在。除了不是针对“日期”绘制,而是根据行的索引 # 绘制图形。

我的目标是根据日期在同一图表上绘制总计、取款和存款列。其他两列都使用命令输出正常:

blah['Total'].plot() 
blah['Withdrawal'].plot()

最佳答案

NaN 将始终中断线图:

因为 NaN 仍然存在于数据中,所以该行将被中断。 Pandas 不知道如何将直线穿过 NaN,因此只能绘制连续的数值。您必须删除 NaN 才能让该行继续通过有效数据。如果绘制点,您将看到所有内容。

这是一个LINK一个关于绘制 NaN 的类似但不同的问题,其中答案提到了通过 NaN 绘制一条线的问题。

可重现的例子:

import random
import pandas as pd
import numpy as np

c = [np.nan] * 10
c.extend(random.sample(range(100), 10))
random.shuffle(c)

d = {"a":random.sample(range(100), 20), "b":random.sample(range(100), 20), "c":c}

df = pd.DataFrame(d)

df.plot(style="-o") # both points and line to show all values

df.dropna().plot()

关于python - Pandas/matplotlib 并未绘制所有列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50361356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com