我试图计算需求的价格弹性,然后将这些值返回到我的数据框架中。我需要创建三个for循环,因为计算需要考虑每个惟一的日期、惟一的地理位置和惟一的产品来计算ped。我的循环将运行,但一旦到达“price\ num”代码行,它将返回空值列表。任何帮助都将不胜感激,谢谢!
# now calculate the % Change in Quantity and % Change in Price
# % Change in Quantity = Q2-Q1/(Q2+Q1)/2 *100
# % Change in Price = Q2-Q1/(Q2+Q1)/2 *100
# PED = % Change in Quantity/% Change in Price
# create unique lists for Geography and Product and week ending:
geo_list = data2['Geography'].drop_duplicates().tolist()
product_list = data2['Product'].drop_duplicates().tolist()
date_list = data2['Week Ending'].drop_duplicates().tolist()
# create empty List for Price Elasticity of Demand:
PED_list = []
for d in date_list:
for g in geo_list:
[![enter image description here][1]][1]for p in product_list:
# get log_price for every product in the product list within every geography in the
geography list
log_price = data2.loc[(data2["Week Ending"]==d) & (data2["Geography"]==g) &
(data2["Product"]==p)]["log_price"]
# get qty for every product in the product list within every geography in the geography list
qty = log_price = data2.loc[(data2["Week Ending"]==d) & (data2["Geography"]==g) &
(data2["Product"]==p)]["norm_qty"]
###### This is where we lose data #####
# calculate price numerator Q2 - Q1
price_num = data2.loc[(data2["Week Ending"]==d) & (data2["Geography"]==g) &
(data2["Product"]==p)]["log_price"].diff(1).values
# calculate price denominator (Q2 + Q1)/2
price_den = np.divide(log_price.cumsum(),2)
# calculate % Change in Price:
Delta_Price = np.divide(price_num, price_den)*100
# calculate demand numerator Q2 - Q1:
demand_num = qty.diff(1).values
# calculate demand denominator: (Q2 + Q1)/2
demand_den = np.divide(qty.cumsum(),2)
# calculate % Change in Quantity Demand:
Delta_Demand = np.divide(demand_num, demand_den)
# Calculate Price Elasticity of Demand:
PED = np.divide(Delta_Price, Delta_Demand)```
[1]: https://i.stack.imgur.com/zdoAO.png
暂无答案!
目前还没有任何答案,快来回答吧!