熊猫/图形库未绘制所有列d

2024-05-23 17:39:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为“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行存款,只有57行有价值,其他都在“南”。在

^{pr2}$

该命令输出以下绘图: Crappy plot

问题是这块地上没有所有的存款。如果我创建一个系列,然后放下所有的nan并绘制它,一切都很好:

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

在这里你可以看到所有的废品交易。请注意2017-2012年之后的存款在原件中没有显示。Good plot

为什么第一个案例中没有所有的价值观?如果我创建'blah'而不将Date设置为索引列。问题依然存在。除了不是根据“日期”绘制,而是根据行的索引绘制。在

我的目标是根据日期在同一个图表上绘制总计、取款和存款列。其他两列都可以通过命令输出:

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

Tags: to数据命令pandasdateplot绘制nan
1条回答
网友
1楼 · 发布于 2024-05-23 17:39:01

NaN将始终中断线图:

因为NaN仍然存在于数据中,所以线路将被中断。Pandas不知道如何将线穿过NaN,因此只能绘制连续的数值。必须删除NaN才能使行继续通过有效数据。如果你画出点,你会看到一切。在

下面是一个关于绘制NaN的类似但不同的问题的LINK,答案提到了绘制一条穿过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)

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

derp.dropna().plot()

相关问题 更多 >