如何从带有空格的txt文件中导入数字并将其绘制

时间:2018-09-06 04:31:51

标签: python matplotlib

我的代码是

ValueError: could not convert string to float: '1996 08 01'

data.txt文件包含日期为YYYY MM DD的4,000个条目,数字:

var sum = 0;
while (true)
        {
           Console.Write("Enter a number:  or ok to exit : ");
            String input = Console.ReadLine();
            if (input == "ok" || input.ToLower() == "ok") break;
            if(string.IsNullOrWhiteSpace(input))
            continue;
            sum += Convert.ToInt32(input);
        }
        Console.WriteLine("Total Result: " + sum);

我得到了错误

#!/usr/bin/env python
import tika
tika.initVM()
from tika import parser
parsed = parser.from_file('pdf/myPdf.pdf')

如何将其转换为字符串并仍然正确显示在图形上?

2 个答案:

答案 0 :(得分:1)

您可以使用pandas。特别是read_csv函数,它返回一个DataFrame

问题不是4000点。但是x是一个字符串(日期为字符串)。尝试将它们转换为datetime,以使其更易于管理。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('data.txt', names=['date', 'value'])

# We convert the str to datetime
x = pd.to_datetime(df.date)
y = df.value

plt.plot(x,y, label='test')

plt.xlabel('Date')
plt.ylabel('F10.7 flux')
plt.title('Solar Cycle 23')
plt.legend()

plt.show()

test_plot

请注意,df.date和df.value不是数组,而是pandas Series。 要访问值(仅限数组):

x = df.date.values
y = df.value.values

答案 1 :(得分:1)

使用熊猫,可以在DataFrame创建期间通过使用parse_dates=[0]来解析日期时间信息,并指定第一列应包含日期时间数据。

旁注;无需采取将df列分配给x和y的中间步骤。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('solar.txt', names=['date', 'value'], parse_dates=[0])
plt.plot(df.date, df.value, label='test')
plt.xticks(rotation='45')

plt.xlabel('Date')
plt.ylabel('F10.7 flux')
plt.title('Solar Cycle 23')
plt.legend()
plt.show()

enter image description here