首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用列数据对大数据进行统计分析

如何使用列数据对大数据进行统计分析
EN

Stack Overflow用户
提问于 2019-08-21 06:15:34
回答 3查看 91关注 0票数 1

在我的数据集中,我有48000个村庄,每个村庄有10到12种作物,每个村庄的作物播种面积是多少,我想知道哪种作物的主要区域是哪个村庄,在所有作物中,1到.的比例是多少?在那个村庄里种庄稼。也就是说,我想找出村级作物的比例,如果A村有作物-1和作物-2,那么A占作物-1和作物-2的百分比是多少?

因此,接下来,我可以根据特定的crop.so对村庄进行排序,然后我可以了解哪个作物是大面积种植给哪个村庄的。

代码语言:javascript
运行
复制
  District   Taluka            Village Name       Crop        Area in hec
0   Ahmednagar  Pathardi          Alhanwadi   Bajara        370.0
1   Ahmednagar  Pathardi             Adgaon   Bajara        302.0
2   Ahmednagar  Pathardi       Ambika Nagar   Bajara         40.0
3   Ahmednagar  Pathardi         Bharajwadi   Bajara         90.0
4   Ahmednagar  Pathardi           Bhalgaon   Bajara        254.0
5   Ahmednagar  Pathardi  Bhawarwadi (N.V.)   Bajara         35.0
6   Ahmednagar  Pathardi           Badewadi   Bajara         17.0
7   Ahmednagar  Pathardi              Akola   Bajara        175.0
8   Ahmednagar  Pathardi          Auranjpur   Bajara         35.0
9   Ahmednagar  Pathardi          Agaskhand   Bajara        100.0
10  Ahmednagar  Pathardi          Alhanwadi   Cotton        150.0
11  Ahmednagar  Pathardi             Adgaon   Cotton        310.0
12  Ahmednagar  Pathardi       Ambika Nagar   Cotton        131.0
13  Ahmednagar  Pathardi         Bharajwadi   Cotton        161.0
14  Ahmednagar  Pathardi           Bhalgaon   Cotton        562.0
15  Ahmednagar  Pathardi  Bhawarwadi (N.V.)   Cotton        211.0
16  Ahmednagar  Pathardi           Badewadi   Cotton        104.0
17  Ahmednagar  Pathardi              Akola   Cotton        550.0
18  Ahmednagar  Pathardi          Auranjpur   Cotton          0.0
19  Ahmednagar  Pathardi          Agaskhand   Cotton          0.0
20  Ahmednagar  Pathardi          Alhanwadi  Soybean         26.0
21  Ahmednagar  Pathardi             Adgaon  Soybean         52.0
22  Ahmednagar  Pathardi       Ambika Nagar  Soybean         72.0
23  Ahmednagar  Pathardi         Bharajwadi  Soybean         88.0
24  Ahmednagar  Pathardi           Bhalgaon  Soybean         90.0
25  Ahmednagar  Pathardi  Bhawarwadi (N.V.)  Soybean         93.0
26  Ahmednagar  Pathardi           Badewadi  Soybean        100.0
27  Ahmednagar  Pathardi              Akola  Soybean         10.0
28  Ahmednagar  Pathardi          Auranjpur  Soybean         45.0
29  Ahmednagar  Pathardi          Agaskhand  Soybean         20.0
30  Ahmednagar  Pathardi          Alhanwadi    Maize         10.0
31  Ahmednagar  Pathardi             Adgaon    Maize          1.5
32  Ahmednagar  Pathardi       Ambika Nagar    Maize          3.0
33  Ahmednagar  Pathardi         Bharajwadi    Maize          5.0
34  Ahmednagar  Pathardi           Bhalgaon    Maize         12.0
35  Ahmednagar  Pathardi  Bhawarwadi (N.V.)    Maize         51.0
36  Ahmednagar  Pathardi           Badewadi    Maize          5.0
37  Ahmednagar  Pathardi              Akola    Maize         25.0
38  Ahmednagar  Pathardi          Auranjpur    Maize          5.0
39  Ahmednagar  Pathardi          Agaskhand    Maize         10.0
代码语言:javascript
运行
复制
import pandas as pd

import numpy as np

D=pd.read_excel("/media/desktop/Sample-2.xlsx","Sheet1")

village=D["Village Name"].unique()

crop=D["Crop"].unique()

q1=[]

for i in village:

    for j in crop:
        a=D["Village Name"]==i
        b=D["Crop"]==j
        D1=D[a&b]
        q1.append(D1)
q2=[]

for i in q1:

    if i.empty==False:
        q2.append(i)

现在我们可以得到村庄的作物播种面积,接下来我们必须计算A村的作物-1,%的作物-2.%的作物-N。

公式:对于A村的作物-1是作物-1/在那个村庄的所有作物,我们得到的作物-1%在那个村庄,同样的方法是找出%的作物-2。

所有村庄都一样。

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-21 06:29:16

第一次用于每个村庄的最高作物:

代码语言:javascript
运行
复制
df1 = df.sort_values(['Village Name','Area in hec'], ascending=[True, False])

df2 = df1.drop_duplicates('Village Name')
print (df2)
      District    Taluka       Village Name     Crop  Area in hec
11  Ahmednagar  Pathardi             Adgaon   Cotton        310.0
9   Ahmednagar  Pathardi          Agaskhand   Bajara        100.0
17  Ahmednagar  Pathardi              Akola   Cotton        550.0
0   Ahmednagar  Pathardi          Alhanwadi   Bajara        370.0
12  Ahmednagar  Pathardi       Ambika Nagar   Cotton        131.0
28  Ahmednagar  Pathardi          Auranjpur  Soybean         45.0
16  Ahmednagar  Pathardi           Badewadi   Cotton        104.0
14  Ahmednagar  Pathardi           Bhalgaon   Cotton        562.0
13  Ahmednagar  Pathardi         Bharajwadi   Cotton        161.0
15  Ahmednagar  Pathardi  Bhawarwadi (N.V.)   Cotton        211.0

和每种作物的面积百分比:

代码语言:javascript
运行
复制
s = df1.groupby("Crop")['Area in hec'].transform('sum')
df1['perc'] =  df1['Area in hec'].div(s).mul(100)
print (df1.head(10))
      District    Taluka Village Name     Crop  Area in hec       perc
11  Ahmednagar  Pathardi       Adgaon   Cotton        310.0  14.226709
1   Ahmednagar  Pathardi       Adgaon   Bajara        302.0  21.297602
21  Ahmednagar  Pathardi       Adgaon  Soybean         52.0   8.724832
31  Ahmednagar  Pathardi       Adgaon    Maize          1.5   1.176471
9   Ahmednagar  Pathardi    Agaskhand   Bajara        100.0   7.052186
29  Ahmednagar  Pathardi    Agaskhand  Soybean         20.0   3.355705
39  Ahmednagar  Pathardi    Agaskhand    Maize         10.0   7.843137
19  Ahmednagar  Pathardi    Agaskhand   Cotton          0.0   0.000000
17  Ahmednagar  Pathardi        Akola   Cotton        550.0  25.240936
7   Ahmednagar  Pathardi        Akola   Bajara        175.0  12.341326
票数 1
EN

Stack Overflow用户

发布于 2019-08-21 06:24:43

首先使用groupby将每个城市的面积之和合计成一个总数

代码语言:javascript
运行
复制
total_lands = D.groupby(["Village Name"])['Area in hec'].agg(['sum']).drop_index()

然后按城市和作物分组,得到每个城市每一作物的总量。

代码语言:javascript
运行
复制
lands_by_crop = D.groupby(["Village Name","Crop"])['Area in hec'].agg(['sum'])

最后计算百分比..。

代码语言:javascript
运行
复制
percentages = lands_by_crop.map(lambda x:x/total_lands[x.index["Village Name"]])

我认为应该有效(不完全确定在最后一步).也许有更有效的方法来解决这个问题,我不确定

票数 0
EN

Stack Overflow用户

发布于 2019-08-21 06:30:36

要了解农作物的数量-村庄智慧,请使用以下方法:

代码语言:javascript
运行
复制
D.filter(items = ["VillageName","Crop", "Area"],axis=1).groupby(by = ["VillageName","Crop"])

然后,你可以除以sumTotal的作物面积(D.filter(项目=“作物”,“区域”,axis=1).groupby(由=“作物”)或sumTotal村地区(D.filter(项目= "VillageName",“区域”,axis=1).groupby(由=“VillageName”))得出的比例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57585469

复制
相关文章

相似问题

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