【问题标题】:How do you separate a pandas dataframe by year in python?如何在 python 中按年分隔熊猫数据框?
【发布时间】:2020-06-29 22:31:44
【问题描述】:

我正在尝试通过平均 19 年的 NOAA 数据制作一个图表,显示一年中每天的平均温度(旁注,有没有更好的方法来获取历史天气数据,因为 NOAA 似乎超级不一致)。我想知道设置数据的最佳方法是什么。我的数据的相关列如下所示:

              DATE  PRCP    TAVG    TMAX    TMIN    TOBS
  0     1990-01-01  17.0    NaN     13.3    8.3     10.0
  1     1990-01-02  0.0     NaN     NaN     NaN     NaN
  2     1990-01-03  0.0     NaN     13.3    2.8     10.0
  3     1990-01-04  0.0     NaN     14.4    2.8     10.0
  4     1990-01-05  0.0     NaN     14.4    2.8     11.1
...     ...     ...     ...     ...     ...     ...
10838   2019-12-27  0.0     NaN     15.0    4.4     13.3
10839   2019-12-28  0.0     NaN     14.4    5.0     13.9
10840   2019-12-29  3.6     NaN     15.0    5.6     14.4
10841   2019-12-30  0.0     NaN     14.4    6.7     12.2
10842   2019-12-31  0.0     NaN     15.0    6.7     13.9

10843 rows × 6 columns

DATE 列是 datetime64[ns] 类型

这是我的代码:

import pandas as pd
from matplotlib import pyplot as plt

data = pd.read_csv('1990-2019.csv')

#seperate the data by station
oceanside = data[data.STATION == 'USC00047767']
downtown = data[data.STATION == 'USW00023272']
oceanside.loc[:,'DATE'] = pd.to_datetime(oceanside.loc[:,'DATE'],format='%Y-%m-%d')

#This is the area I need help with:
oceanside['DATE'].dt.year

​ 我一直在尝试按年份分离数据,这样我就可以对其进行平均。我想在不使用for 循环的情况下执行此操作,因为我计划使用更多 更大的数据集来执行此操作,这样效率会非常低。我查看了 pandas 文档,但找不到似乎可以做到这一点的函数。我错过了什么吗?这甚至是正确的方法吗?

我是 pandas/python 数据分析的新手,所以很可能答案就在眼前。

任何帮助将不胜感激!

【问题讨论】:

    标签: python pandas dataframe data-analysis


    【解决方案1】:

    创建一个数据框字典,其中每个键为一年

    df_by_year = dict()
    for year oceanside.date.dt.year.unique():
        data = oceanside[oceanside.date.dt.year == year]
        df_by_year[year] = data
    

    获取单年数据

    oceanside[oceanside.date.dt.year == 2019]
    

    获取每年的平均值

    oceanside.groupby(oceanside.date.dt.year).mean()
    

    【讨论】:

    • 感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2022-06-27
    • 2020-05-23
    • 2017-01-29
    • 2017-10-17
    • 2022-01-25
    • 2021-12-10
    • 2021-08-11
    • 1970-01-01
    相关资源
    最近更新 更多