Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何绘制DataFrame中包含的特定日期的时间序列数据,从而可能生成单个记录_Python_Pandas_Dataframe_Matplotlib - Fatal编程技术网

Python 如何绘制DataFrame中包含的特定日期的时间序列数据,从而可能生成单个记录

Python 如何绘制DataFrame中包含的特定日期的时间序列数据,从而可能生成单个记录,python,pandas,dataframe,matplotlib,Python,Pandas,Dataframe,Matplotlib,是否有任何方法可以为只包含一条记录的数据帧创建折线图 我在数据框架中拥有的示例数据:Head=['Date'、'Count1'、'Count2'、'Count3'] 01-10-2010, 100, 0 , 100 X轴:我试图在每个星期天的基础上显示日期 Y轴:所有其他3个计数 我已经提到了,但我正在试图找到一种方法,我可以创建一个记录图表 如果有人有任何示例代码,请帮助我。根据定义将单个记录打印为一行是不可能的,因为您需要两个点来定义行空间 但是,当我阅读您的问题时,您希望将一周中某一天的

是否有任何方法可以为只包含一条记录的
数据帧
创建折线图

我在
数据框架中拥有的示例数据:Head=['Date'、'Count1'、'Count2'、'Count3']

01-10-2010, 100, 0 , 100
X轴:我试图在每个星期天的基础上显示日期

Y轴:所有其他3个计数

我已经提到了,但我正在试图找到一种方法,我可以创建一个记录图表


如果有人有任何示例代码,请帮助我。

根据定义将单个记录打印为一行是不可能的,因为您需要两个点来定义行空间

但是,当我阅读您的问题时,您希望将一周中某一天的数据点绘制为时间序列

如果是这种情况,您可以尝试以下方法:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
首先,让我们为您的计数生成一系列(每日)日期和一些随机数据:

dates = pd.date_range(start='1/1/2020', end='01/31/2020', freq='D')
count1 = np.random.randint(0,100,len(dates))
count2 = np.random.randint(0,100,len(dates))
count3 = np.random.randint(0,100,len(dates))
我们使用它来定义一个以日期为索引的数据框:

df = pd.DataFrame({'dates': dates, 'count1': count1, 'count2': count2, 'count3': count3})
df.set_index('dates', inplace=True)
如果只想绘制星期天的数据,我们可以使用一行代码(然后强制matplotlib绘制):

最后一个表达式使用Pandas的DateTimeIndex中的数字工作日索引,其中周一==0,周二==1,…,周日==6

这将导致以下绘图:

但是,线打印不适用于单个数据点。如果数据框中只有一个数据点,则必须将plots
style
属性设置为
,该属性对应于散点图:

df[df.index.weekday==6].plot(style='.')

这也适用于单个数据点,就像我们在一周的数据范围内所做的那样:

dates = pd.date_range(start='1/1/2020', end='01/07/2020', freq='D')
count1 = np.random.randint(0,100,len(dates))
count2 = np.random.randint(0,100,len(dates))
count3 = np.random.randint(0,100,len(dates))
df = pd.DataFrame({'dates': dates, 'count1': count1, 'count2': count2, 'count3': count3})
df.set_index('dates', inplace=True)
df[df.index.weekday==6].plot(style='.')

您需要重塑数据帧:

df = pd.DataFrame([['01-10-2010',100,0,100]], columns=['Date','Count1','Count2','Count3']

df
输出:

        Date  Count1  Count2  Count3
0 2010-01-10     100       0     100
设置索引转换为日期时间数据类型,并使用
melt

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

df.melt('Date').set_index('Date').plot()
输出:

非常感谢您的回复。如果dataframe df只有1条记录,则不会生成图形?我更新了答案,为您提供了一个打印单个记录的选项。但是,这只能作为散点图进行,而不能使用线图。希望这对你有帮助。虽然我有数字列,但我得到一个错误:TypeError:没有要打印的数字数据。我能找到什么方法吗?我可以在这个答案中问一个疑问。由于np.随机生成,数据帧大约有7条记录。但我有1条记录,我无法创建散点图。如果我提供**pd.date\u范围(start='1/1/2020',end='1/01/2020',freq='D'),我得到的是TypeError:Empty'DataFrame':没有要绘图的数字数据此数据的图表应该是什么样的?一条垂直线?@ScottBoston。。是的,斯科特@我可以知道有没有可能得到两行用于Count1和Count3的数据吗?@因为我得到的是空白的完整图形,我无法得到lineCheck数据类型。确保它们是数字(int)或(float)@我可以知道有没有可能得到两条线,分别代表Count1和Count3?一条线需要两个点,每个点对应一个点。
df['Date'] = pd.to_datetime(df['Date'])

df.melt('Date').set_index('Date').plot()