Python 2.7 使用Python 2.7计算标准偏差并绘制曲线拟合

Python 2.7 使用Python 2.7计算标准偏差并绘制曲线拟合,python-2.7,pandas,Python 2.7,Pandas,我想写一个pyhon代码来分析网页上100年数据中每个月的标准偏差() 我写的标准偏差代码是 def sd(x): l = pd.DataFrame() for e in range(1, 13): r = x[x.index.str.contains("-" + str(e).zfill(2))] l = l.append(r.std().to_frame().transpose(), ignore_index=True)

我想写一个pyhon代码来分析网页上100年数据中每个月的标准偏差()

我写的标准偏差代码是

def sd(x):
    l = pd.DataFrame()
    for e in range(1, 13): 
            r = x[x.index.str.contains("-" + str(e).zfill(2))] 
            l = l.append(r.std().to_frame().transpose(), ignore_index=True) 

    return l

standard = sd(df)

这里我想绘制
m_ta
与数据本身的曲线拟合。有人能帮我怎么画吗。谢谢

一个流行的绘图库是
matplotlib
pandas
有一个方便的界面。要绘制线条图,只需调用
df.column\u name.plot()

无论如何,希望这有助于:

import requests
from lxml import html

# GET THE DATA
# body > div > pre > font
tree = html.fromstring(requests.get('http://owww.met.hu/eghajlat/eghajlati_adatsorok/bp/Navig/202_EN.htm').text)
lines = [l.text.split() for l in tree.xpath('//body/div/pre/font')]

# IMPORT DATA INTO PANDAS
import pandas as pd
import numpy as np

df = pd.DataFrame(lines[2:], columns = lines[0]).convert_objects(convert_numeric=True)
df['datum'] = pd.to_datetime(df.datum, format='%Y-%m')
df = df.set_index('datum')

print 'Standard deviation of m_ta: %f' % df.m_ta.std()

# PLOT
from matplotlib import pyplot as plt
df.m_ta.plot()
plt.show()
std为7.962143,图片如下:


感谢@Yakym提供了将数据加载为
df
的方法

获得后,您可以提取月份并将其用于分组:

df['month'] = df.index.month
df['monthly_mean'] = df.groupby('month').m_ta.transform('mean')
df['monthly_std'] = df.groupby('month').m_ta.transform('std')
由于在一个图表中查看的数据太多,您可能希望将每个月的数据视为一个单独的数据框。我用字典理解来做这件事

dfs = {m: df.loc[df.month == m, :] for m in df.month.unique()}
现在,您可以单独查看每个月的结果。例如,这里是一月

n = 1
dfs[n].m_ta.plot(title='Month {0}'.format(n));
dfs[n].monthly_mean.plot();
(dfs[n].monthly_mean + dfs[n].monthly_std).plot();
(dfs[n].monthly_mean - dfs[n].monthly_std).plot()

谢谢。我理解std的图表,但我仍然坚持曲线拟合。我想我误解了这个问题。无论如何,@Alexander已经结束了这个问题。@Alexander……非常感谢你。在这里,你为所有的木塔、木塔税和木塔画了图吗?不,这只是
m木塔
。似乎
m_tax
m_tan
可能分别是给定月份的最大值和最小值
m_ta
:月平均温度,
m_tax
:该月的日最高平均温度,
m_tan
:该月的日最低平均温度
n = 1
dfs[n].m_ta.plot(title='Month {0}'.format(n));
dfs[n].monthly_mean.plot();
(dfs[n].monthly_mean + dfs[n].monthly_std).plot();
(dfs[n].monthly_mean - dfs[n].monthly_std).plot()