我有一份印度牛奶生产数据集。我试图通过熊猫获得5个州(如果有的话)的名单,其中过去3年的总产奶量增加了。
State Total10-11 Total11-12 Total13-14 Total14-15 Total15-16
Andhra Pradesh 11204 12088 13007 9656 10817
Arunachal Pradesh 28 22 43 46 50
Assam 790 797 814 829 844
Bihar 6517 6643 7197 7775 8289
Chhattisgarh 1030 1118 1208 1232 1278
Goa 60 60 68 66 54
Gujarat 9322 4089 11112 11690 12262
Haryana 6268 6661 7442 7902 8381
Himachal Pradesh 1102 1120 1151 1173 1283
预期产出:
State
Assam
Bihar
Chhattisgarh
Haryana
Himachal Pradesh
我想找到每年牛奶产量呈上升趋势的州。与往年相比,随后几年牛奶产量不应减少。预期的产出状态使产量增加,甚至在生产中也没有下降。我有点坚持这个,我尝试了一些方法,但他们并没有接近正确的答案。解决方案是什么?提前谢谢。
答案 0 :(得分:2)
如果您只是在寻找趋势,那么我认为可视化就是答案。
你可以这样做。
import matplotlib.pyplot as plt
import pandas as pd
df = df.set_index('state')
df.T.plot(figsize=(10,15))
或者单独看一下:
df.T.plot(figsize=(15,20), subplots=True,layout=(3,3))
答案 1 :(得分:1)
如果您正在寻找差异,那么您可以使用diff > 0
和cumsum
,即
df = df.set_index("State/UT Name")
temp = (df.T.diff() > 0).cumsum()
# Values will increment if the difference between past and present is positive
State/UT Name Andhra Pradesh Arunachal Pradesh Assam Bihar Chhattisgarh \
Total10-11 0 0 0 0 0
Total11-12 1 0 1 1 1
Total13-14 2 1 2 2 2
Total14-15 2 2 3 3 3
Total15-16 3 3 4 4 4
State/UT Name Goa Gujarat Haryana Himachal Pradesh
Total10-11 0 0 0 0
Total11-12 0 0 1 1
Total13-14 1 1 2 2
Total14-15 1 2 3 3
Total15-16 1 3 4 4
# The one with max sum is the one that kept increasing over time
temp.sum().nlargest(10)
State/UT Name
Assam 10
Bihar 10
Chhattisgarh 10
Haryana 10
Himachal Pradesh 10
Andhra Pradesh 8
Arunachal Pradesh 6
Gujarat 6
Goa 3
如果你想要州名,那么
states = temp.sum().nlargest(5).index.tolist()
['Assam', 'Bihar', 'Chhattisgarh', 'Haryana', 'Himachal_Pradesh']