首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用大熊猫来提取出每年用水量最大的县?

如何利用大熊猫来提取出每年用水量最大的县?
EN

Stack Overflow用户
提问于 2018-03-21 15:19:24
回答 2查看 59关注 0票数 0

我是蟒蛇和熊猫的新手,我很难找到2014年灌溉用水最多的10个县。

代码语言:javascript
复制
%matplotlib inline
import csv
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.read_csv('info.csv') #reads csv

data['Year'] = pd.to_datetime(['Year'], format='%Y') #converts string to 
                                                     datetime
data.index = data['Year'] #makes year the index
del data['Year'] #delete the duplicate year column

这就是数据的样子(这只是数据的一部分):

代码语言:javascript
复制
County  WUCode  RegNo   Year    SourceCode  SourceID    Annual    CountyName 
1       IR      311     2014    WELL        1           946       Adams  
1       IN      311     2014    INTAKE      1           268056    Adams
1       IN      312     2014    WELL        1           48        Adams
1       IN      312     2014    WELL        2           96        Adams
1       IR      312     2014    INTAKE      1           337968    Adams
3       IR      315     2014    WELL        5           81900     Putnam
3       PS      315     2014    WELL        6           104400    Putnam

我有几个问题:

我不知道如何只拿出WUCode栏中关于熊猫的"IR“,也不知道如何打印出2014年灌溉用水最高的10个县的桌子。

我已经能够使用.loc函数提取我需要的信息,如下所示:

代码语言:javascript
复制
data.loc['2014', ['CountyName', 'Annual', 'WUCode']]

从这里我有点迷路了。我会很感激你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-21 15:45:13

代码语言:javascript
复制
import numpy as np
import pandas as pd
import string
df = pd.DataFrame(data={"Annual": np.random.randint(20, 1000000, 1000),
                "Year": np.random.randint(2012, 2016, 1000),
                "CountyName": np.random.choice(list(string.ascii_letters), 1000)},
              columns=["Annual", "Year", "CountyName"])

假设df看起来如下:

代码语言:javascript
复制
   Annual  Year CountyName
0  518966  2012          s
1   44511  2013          E
2  332010  2012          e
3  382168  2013          c
4  202816  2013          y

2014年..。

代码语言:javascript
复制
df[df['Year'] == 2014]

由CountyName.

代码语言:javascript
复制
df[df['Year'] == 2014].groupby("CountyName")

看看年度..。

代码语言:javascript
复制
df[df['Year'] == 2014].groupby("CountyName")["Annual"]

拿到这笔钱..。

代码语言:javascript
复制
df[df['Year'] == 2014].groupby("CountyName")["Annual"].sum()

排序结果下降..。

代码语言:javascript
复制
df[df['Year'] == 2014].groupby("CountyName")["Annual"].sum().sort_values(ascending=False)

拿前十名..。

代码语言:javascript
复制
df[df['Year'] == 2014].groupby("CountyName")["Annual"].sum().sort_values(ascending=False).head(10)

此示例输出(由于我的数据是随机的)实际结果可能会有所不同:

代码语言:javascript
复制
CountyName
Q    5191814
y    4335358
r    4315072
f    3985170
A    3685844
a    3583360
S    3301817
I    3231621
t    3228578
u    3164965
票数 1
EN

Stack Overflow用户

发布于 2018-03-21 15:31:26

这可能对你有用:

代码语言:javascript
复制
res = df[df['WUCode'] == 'IR'].groupby(['Year', 'CountyName'])['Annual'].sum()\
                              .reset_index()\
                              .sort_values('Annual', ascending=False)\
                              .head(10)

#    Year CountyName  Annual
# 0  2014      Adams  338914
# 1  2014     Putnam   81900

解释

  • 根据需要,通过WUCode和groupby Year和CountyName进行过滤。
  • 使用reset_index,所以您的结果是一个数据,而不是一个系列。
  • 使用sort_values并通过pd.DataFrame.head提取前10位。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49410188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档