После использования функции группового или сводного счета в пандах, как применить анализ и получить исходные данные - PullRequest
0 голосов
/ 21 октября 2019

У меня есть набор данных для 15000 деревень. Для 1 района есть 12 блоков / Талука. В этом районе выращивается несколько культур, я должен проверить это, посеять посевные площади для этих деревень и выбрать 10 деревень дляДля каждой культуры в случайной выборке мой первый шаг - удалить 0 посевных площадей в наборе данных, после удаления 0 посевных площадей я получаю 6674 деревни, затем я проверяю, в каком районе, в квартале / Талуке, сколькодеревни остаются, поэтому я использую сводные и групповые функции для проверки этого. После поворота я вижу, что в блоке / талуке осталось менее 10 деревень, поэтому в это время мне нужно удалить этот блок / талука, которые дают менее 10 деревень, но в следующий раз я борюсь скак получить данные с помощью функции подсчета, сводная таблица дает это только число 102,42 .... и т. д., но где я могу видеть, что фактическое название деревни данных, посевная площадь в гек и т. д. вот мой код

import pandas as pd
import numpy as np
d=pd.read_excel("/media/desktop/District.xlsx","Data") 
d.drop(d.loc[d['Area in hec']==0].index, inplace=True) 
d.count()
Sr no             6674
District          6674
Taluka            6674
Revenue Circle    6674
Village Name      6674
Crop              6674
Area in hec       6674

pivot = d.pivot_table(index=['Taluka','Crop'], values=['Area in hec'], aggfunc='count')
pivot=pivot.reset_index()
pivot.loc[pivot['Area in hec'] >= 10]
        Taluka         Crop  Area in hec
0   Ahmednagar        Bajra          102
2   Ahmednagar       Cotton           33
3   Ahmednagar    Greengram           86
4   Ahmednagar        Maize           77
5   Ahmednagar      Redgram           24
6   Ahmednagar     Soyabean           74
7        Akole        Bajra           78
8        Akole    Blackgram           29
10       Akole    Groundnut          162
11       Akole        Maize           91
12       Akole        Paddy          125
13       Akole     Soyabean          129
14     Jamkhed        Bajra           86
15     Jamkhed    Blackgram           87
16     Jamkhed       Cotton           86
17     Jamkhed    Greengram           87
18     Jamkhed    Groundnut           13
19     Jamkhed        Maize           87
20     Jamkhed        Onion           47
21     Jamkhed      Redgram           87
22     Jamkhed     Soyabean           65
23      Karjat        Bajra          119
24      Karjat    Blackgram          111
25      Karjat       Cotton          106
26      Karjat    Greengram          118
27      Karjat    Groundnut           34
28      Karjat        Maize          119
29      Karjat        Onion          107
30      Karjat      Redgram          103
31      Karjat  Sesame(Til)           10
..         ...          ...          ...
63    Pathardi    Groundnut          118
64    Pathardi        Maize          123
65    Pathardi        Onion           77
66    Pathardi      Redgram          132
67    Pathardi  Sesame(Til)           25
68    Pathardi     Soyabean           26
70      Rahuri        Bajra           44
72      Rahuri       Cotton           72
73      Rahuri    Greengram           20
75      Rahuri        Maize           54
77      Rahuri     Soyabean           60
78   Sangamner        Bajra          163
80   Sangamner       Cotton           39
81   Sangamner    Greengram           37
82   Sangamner    Groundnut           75
83   Sangamner        Maize          179
84   Sangamner      Redgram           46
85   Sangamner     Soyabean          137
86    Shevgaon        Bajra           98
88    Shevgaon       Cotton          112
89    Shevgaon    Greengram           31
90    Shevgaon    Groundnut           41
91    Shevgaon        Maize           54
92    Shevgaon        Onion           31
93    Shevgaon      Redgram           98
94    Shevgaon     Soyabean           15
95  Shrirampur        Bajra           15
96  Shrirampur       Cotton           50
97  Shrirampur        Maize           54
99  Shrirampur     Soyabean           40

[85 rows x 3 columns]

Кроме того, я попробовал групповую функцию

Groupby=d.groupby(['Taluka', 'Crop'])['Village Name'].aggregate('count')
Groupby
Taluka      Crop     
Ahmednagar  Bajra        102
            Blackgram      3
            Cotton        33
            Greengram     86
            Maize         77
            Redgram       24
            Soyabean      74
Akole       Bajra         78
            Blackgram     29
            Greengram      9
            Groundnut    162
            Maize         91
            Paddy        125
            Soyabean     129
Jamkhed     Bajra         86
            Blackgram     87
            Cotton        86
            Greengram     87
            Groundnut     13
            Maize         87
            Onion         47
            Redgram       87
            Soyabean      65
Karjat      Bajra        119
            Blackgram    111
            Cotton       106
            Greengram    118
            Groundnut     34
            Maize        119
            Onion        107
                        ... 
Rahuri      Bajra         44
            Blackgram      1
            Cotton        72
            Greengram     20
            Groundnut      8
            Maize         54
            Redgram        7
            Soyabean      60
Sangamner   Bajra        163
            Blackgram      7
            Cotton        39
            Greengram     37
            Groundnut     75
            Maize        179
            Redgram       46
            Soyabean     137
Shevgaon    Bajra         98
            Blackgram      9
            Cotton       112
            Greengram     31
            Groundnut     41
            Maize         54
            Onion         31
            Redgram       98
            Soyabean      15
Shrirampur  Bajra         15
            Cotton        50
            Maize         54
            Redgram        4
            Soyabean      40
Name: Village Name, dtype: int64

. Теперь мне нужны эти данные, т.е. список из 102 деревень для блока Ахмеднагара для урожая баджры, 33 деревни для блока Ахмеднагара / талука для урожая хлопка .. и т.д.

Любая помощь поможет мне решить эту проблему, спасибо

1 Ответ

0 голосов
/ 21 октября 2019

Я получил ответ. Следующий код, который я использовал,

import pandas as pd
import numpy as np
d=pd.read_excel("/media/desktop/District.xlsx","Data") 
d.drop(d.loc[d['Area in hec']==0].index, inplace=True) 
d.count()

def f(x):
    x['No.of Villages'] = x.groupby(['Taluka','Crop'])['Area in hec'].transform('count')
    x['No.of Villages'] = x['No.of Villages'].fillna('')
    return x
df1 = d.groupby(['Taluka','Crop']).apply(f)
Final=df1.loc[df1['No.of Villages'] >= 10]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...