首页 > 解决方案 > Python - 绘制特定的时间序列范围

问题描述

我有这个 txt文件,它包含一列有 456 个元素,前 6 个是 NaN。我想做的是将这些值与每月日期相匹配,它们从 1980 年 1 月到 2017 年 12 月。

然后我想只选择每年 10 月的月份(38 个值)并用它们制作一个线图。由于我对python相当陌生,这就是我所做的:

import pandas as pd
import matplotlib.pyplot as mplt
import numpy as np

#Read the txt data
input_data = pd.read_csv("D:\PCT\Datos_dummies\D1.txt",header = None )

#Create a list with the dates
dates =pd.date_range("1979-12-10","2017-12-07",freq="MS").strftime("%Y-%b").tolist()

我尝试使用以下日期和值创建一个数据框:

#Create a data frame with the input data and the dates
df = pd.DataFrame({'Year':dates,'Ind':input_data},columns=["Year","Ind"])

但我得到这个错误:TypeError: 'long' object is not iterable

我不确定我是否正在做正确的方法或者它太复杂了,有谁知道如何做到这一点?以相似或不同的方式?

标签: pythonplottime-series

解决方案


我认为问题在于 input_data 的格式,因为您正在尝试创建一个包含“Year”和“Ind”两列的 DataFrame - 但 input_data 不是一个系列,它是一个 DataFrame。

如果您只想向从文件中读取的数据框添加一列以添加日期,那么只需执行此操作即可将新列添加到您已经拥有的 input_data 数据框:

import pandas as pd
import matplotlib.pyplot as mplt
import numpy as np

#Read the txt data
input_data = pd.read_csv("D:\PCT\Datos_dummies\D1.txt",header = None )

#Create a list with the dates
dates =pd.date_range("1979-12-10","2017-12-07",freq="MS").strftime("%Y-%b").tolist()

# Add the dates as a column to the 'input_data' DataFrame
input_data['Year'] = dates

那对你有用吗?

如果您想了解更多信息,请发布有关 input_data 内容的更多信息:什么是列和类型。


推荐阅读