获得大熊猫的平均值

时间:2018-02-15 21:56:16

标签: python pandas

我试图能够读取一个文件,我将在该文件中提取该位置的名称,然后计算他们获得的平均雪量。 这是我到目前为止所做的。

import pandas
data = pandas.read_csv('filteredData.csv')
if ('NAME' == 'ADA 0.7 SE, MI US'):
    data.ix['1/1/2016':'12/31/2016']
    newdata=data['SNOW'].mean()

我仍然不确定这样做会不会更好,方法是将地点名称分组,然后计算平均降雪量。

请耐心等待我,我仍然是熊猫新手。

此图片只是二十个不同位置的一部分: This image is just one part of twenty different locations

1 个答案:

答案 0 :(得分:0)

您似乎可以使用groupby()

import pandas as pd
from datetime import datetime

# Create test data
df = pd.DataFrame({
    "name": ["place1", "place1", "place1", "place2", "place2", "place2"] * 2,
    "date": ["1/1/2016", "1/2/2016", "1/3/2016"] * 2 + ["1/1/2017", "1/2/2017", "1/3/2017"] * 2,
    "snow": [10.0, 20.0, 30.0, 100.0, 200.0, 300.0, 0.0, 1.0, 2.0, 1000.0, 2000.0, 3000.0]
    })
# Transform string date to datetime format
df["date"] = pd.to_datetime(df["date"])

df看起来像:

         date    name    snow
0  2016-01-01  place1    10.0
1  2016-01-02  place1    20.0
2  2016-01-03  place1    30.0
3  2016-01-01  place2   100.0
4  2016-01-02  place2   200.0
5  2016-01-03  place2   300.0
6  2017-01-01  place1     0.0
7  2017-01-02  place1     1.0
8  2017-01-03  place1     2.0
9  2017-01-01  place2  1000.0
10 2017-01-02  place2  2000.0
11 2017-01-03  place2  3000.0

然后计算某个组的平均雪量,在这种情况下,我按名称和年份分组:

# Group dataset by name of place and year, calculate the average amount of snow for each group
df["snow_average"] = df.groupby(["name", df.date.dt.year])["snow"].transform("mean")

df现在看起来像:

         date    name    snow  snow_average
0  2016-01-01  place1    10.0          20.0
1  2016-01-02  place1    20.0          20.0
2  2016-01-03  place1    30.0          20.0
3  2016-01-01  place2   100.0         200.0
4  2016-01-02  place2   200.0         200.0
5  2016-01-03  place2   300.0         200.0
6  2017-01-01  place1     0.0           1.0
7  2017-01-02  place1     1.0           1.0
8  2017-01-03  place1     2.0           1.0
9  2017-01-01  place2  1000.0        2000.0
10 2017-01-02  place2  2000.0        2000.0
11 2017-01-03  place2  3000.0        2000.0

您可以根据自己的需要更改groupby()条件。我使用name和年份,因为这就是你想要的样子,从你的例子来看。

修改 道歉,我感到沮丧。您似乎误解了我的答案,并且您需要手动创建新的数据框。您可以使用csv文件中的数据集,并执行与上述相同的命令,但将它们应用于您调用data的数据集:

import pandas
data = pandas.read_csv('filteredData.csv')

# Transform string date to datetime format
data["date"] = pd.to_datetime(data["date"])
print data

# Group dataset by name of place and year, calculate the average amount of snow for each group
data["snow_average"] = data.groupby(["name", data.date.dt.year])["snow"].transform("mean")
print data