Python - 绘制历史温度数据

时间:2018-02-15 21:10:12

标签: python plot graph weather

我目前正在研究1815年Mount Tambora喷发如何导致所谓的“没有夏天的年份”#34;并需要一些帮助绘制数据。

我有一个气象站的文本文件,提供我感兴趣的年份的日常温度数据(1816年)。文件中的每一列代表从1月到12月的月份(第一个栏),每行是该月的一天;

1  -22    5   52   82  102  155  176  168  100  114   89   54
2  -31   21   68  107  139  177  146  159   90  118   85   74
3  -49   41   63  103  170  134  144  140  106   99   86   63
4  -52   56   77  109  180  137  153  136  105  105   52   90
5  -66   75   67  103  169  165  160  145  102   90   62   74
6  -35   80   60   82  121  152  173  131  123   96   86   60
7  -17   69   34   91  128  175  195  125  139  103   75   65
8   -7   80  -17   79  152  161  135  134  148  104   34   64

我对Python比较陌生,但可以做基本的绘图......但是这里的数据显示方式让我有点难过!我想绘制的是全年,x轴上的天/月,以及y轴上的温度值,在一张图上。这样我就可以将今年与其他年份进行比较!

我可以做基本的事情,例如选择代表1月的列并将所有-999值设置为nan,即

d = np.loadtxt("test.txt")
January = d[:,1]
January[January <= -999] = np.nan

但很难想出一种以我想要的方式绘制所有数据的方法。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

将文本文件读入pandas数据帧。然后你可以将它取消堆叠,这将产生连续几天的一系列。

import pandas as pd

# read text-file
df = pd.read_csv('test.txt', sep='  ')

# drop the first column in your text file
df = df.drop(df.columns[0], axis=1)

# unstack to make a series of the days
df = df.unstack()

# remove na that will come from months with less than 31 days
df = df.dropna()

# plot with pandas
df.plot()

答案 1 :(得分:0)

这是代码:

import numpy as np
import matplotlib.pyplot as plt

temp_data = np.loadtxt("plot_weather_data.txt")
num_days = len(temp_data)
temperature = []

# for each of the days
for index_days in range(0, num_days-1):
#     for each of the months
    for index_month in range(1, 13):
#         starting from the second column, append the value to a list
        temperature.append(temp_data[index_days][index_month])

# call matplot lib and plot the graph
plt.plot(temperature)
plt.ylabel("temperature [C]")
plt.show()

您还可以在此处找到名为plot_weather_data.txt的文本文件以及上述文件:https://github.com/alphaCTzo7G/stackexchange/blob/master/python/plot_temp.py