Как построить гистограмму для большого списка с более чем 1000 записей в таблице - PullRequest
0 голосов
/ 16 апреля 2020
import pandas as pd
import numpy as np
import csv

#load csv files
market_price = pd.read_csv('data/market.csv')
standard_price = pd.read_csv('data/standard.csv')
coc = pd.read_csv('data/cost-of-cultivation.csv')

#list of considered crops
products = ["groundnut", "paddy", "rice", "wheat", "barley", 
            "jowar", "bajra", "maize", "ragi", "gram", "tur", 
            "mustard", "soyabean", "sunflower", 
            "cotton", "jute", "sugarcane"]
market_edited = market_price[market_price['commodity'].str.lower().isin([x.lower() for x in products])]

#take mean of all varieties of one crop
grouped_market = market_edited.groupby(['state', 'commodity']).agg(['mean']).reset_index()
grouped_market.columns = ["".join(x) for x in grouped_market.columns.ravel()]

#convert price in quintal to price in kg
grouped_market['modal_pricemean'] = grouped_market['modal_pricemean'].apply(lambda x: float(x)/100)
standard_price['price'] = standard_price['price'].apply(lambda x: float(x)/100)

#convert to dictionary of crop to profit or cost
std_prices = dict(zip(standard_price.standard, standard_price.price))
coc_dict = dict(zip(coc.crop, coc.cost))

#state vs crop matrix
yield_mat = pd.read_csv('data/state-crop-yield.csv')

#state and crop lists
states = yield_mat['state']
crops = list(yield_mat.columns)[1:]

yield_np_mat = yield_mat.as_matrix()

prediction_table = list()
prediction_table.append(["state", "crop", "profit"])

print('crops that can be grown:')
for i in range(0,yield_np_mat.shape[0]-1):
    for j in range(1,yield_np_mat.shape[1]):
        if(yield_np_mat[i][j]!=0.0):
        #if yielding in current state then calculate profit
            rs_per_kg = grouped_market[(grouped_market['state']==states[i]) & (grouped_market['commodity'] == crops[j-1])]['modal_pricemean']
            if(rs_per_kg.shape[0]==1):
        #use market price data
                diff = ((yield_np_mat[i][j]) * rs_per_kg.values[0]) - coc_dict[str(crops[j-1].lower())]
                val = diff if diff>0.0 else 1.0
            else:
        #use approximated standard price
                diff = ((yield_np_mat[i][j]) * std_prices[str(crops[j-1].lower())]) - coc_dict[str(crops[j-1].lower())]
                val = diff if diff>0.0 else 1.0

        #append all results to a table
            #print("*", states[i],crops[j-1],val)
            prediction_table.append([states[i], crops[j-1], val])
        else:
        #states which cant produce the given crop
            #print("***", states[i],crops[j-1],val)
            prediction_table.append([states[i], crops[j-1], val])
        if(val>500):
            prediction_table.append([states[i], crops[j-1], val])
            print("*",states[i], crops[j-1], val)
        else:
            print('crops that cant be grown:')
            prediction_table.append([states[i], crops[j-1], -1])
            print("***", states[i],crops[j-1], val)         
#print(prediction_table)
#save to csv
with open("data/state-profit-data.csv", "wb") as f:
    writer = csv.writer(f)
    writer.writerows(prediction_table)

теперь для определенного штата нам нужна гистограмма по названиям культур по оси x и прибыли по этой оси y

название штата, название культуры, прибыль

('Андхра-Праде sh ',' Jowar ', 10974.069178111) (' Andhra Prade sh ',' Bajra ', 7414.478167142301) (' Andhra Prade sh ',' Ragi ', 5636.3760976878) (' Andhra Prade sh ', «Пшеница», 1,0) («Андхра-Праде sh», «Ячмень», 1,0) («Андхра-Праде sh», «Грамм», 5058.972381754003) («Андхра-Праде sh», «Тур», 1,0 ) («Андхра Праде sh», «Горчица», 1.0) («Андхра Праде sh», «Соябей», 7632.152855004762) («Андхра Праде sh», «Джут», 1.0) («Андхра Праде» sh ',' Mesta ', 1609.9308729210024) (' Andhra Prade sh ',' Sugarcane ', 893130.4966730588) (' Arunachal Prade sh ',' Rice ', 999.5865639660005) (' Arunachal Prade sh ', «Jowar», 999,5865639660005) («Arunachal Prade sh», «Bajra», 999,5865639660005) («Arunachal Prade sh», «Maize», 4482,932344170502) («Arunachal Prade sh», 442,9341, 82), Ragi ) ('Аруначал Праде sh ',' Wheat ', 2388.5555511497478) (' Arunachal Prade sh ',' Barley ', 2388.5555511497478) (' Arunachal Prade sh ',' Gram ', 2388.5555511497478) (' Arunachal Prade sh '', Тур, 3390.0) («Аруначал Прад sh», «Арахис», 3390.0) («Аруначал Прад sh», «Горчица», 7963.315162592498) («Аруначал Прад sh», «Соя», 3841.3619765416115) («Аруначал Прад sh», «Подсолнух», 3841.3619765416115) («Аруначал Прад sh», «Хлопок», 3841.3619765416115) («Аруначал Прад sh», «Джут», 3841.3619765416115) «Арун» 1034 * ',' Mesta ', 3841.3619765416115) (' Arunachal Prade sh ',' Sugarcane ', 204345.6734693876)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...