프로젝트
Adidas 영업이익률 분석
import pymysql
import matplotlib.pyplot as plt
import numpy as np
db = pymysql.connect(host='localhost',
port=3306,
user='root',
passwd='****',
db='programmers_da',
charset='utf8')
cursor = db.cursor()
city_product_OperatingMargin_SalesMethod = []
cities = dict()
products = dict()
SalesMethods = dict()
sql = "SELECT city, product, OperatingMargin, SalesMethod FROM adidas WHERE OperatingMargin >= 70 ORDER BY 1, 2;"
cursor.execute(sql)
for line in cursor:
city_product_OperatingMargin_SalesMethod.append(list(line))
for line in range(len(city_product_OperatingMargin_SalesMethod)):
city_product_OperatingMargin_SalesMethod[line][2] = float(str(city_product_OperatingMargin_SalesMethod[line][2]))
for city in city_product_OperatingMargin_SalesMethod:
if city[0] in cities:
cities[city[0]] += 1
else:
cities[city[0]] = 1
for product in city_product_OperatingMargin_SalesMethod:
if product[1] in products:
products[product[1]] += 1
else:
products[product[1]] = 1
for SalesMethod in city_product_OperatingMargin_SalesMethod:
if SalesMethod[3] in SalesMethods:
SalesMethods[SalesMethod[3]] += 1
else:
SalesMethods[SalesMethod[3]] = 1
cities_key = list(cities.keys())
cities_values = list(cities.values())
products_key = list(products.keys())
products_values = list(products.values())
SalesMethods_key = list(SalesMethods.keys())
SalesMethods_values = list(SalesMethods.values())
width = 0.25
bar_positions = np.arange(len(cities_key) + len(products_key) + len(SalesMethods_key))
plt.bar(bar_positions[:len(cities_key)], cities_values, width, color='r', label='City')
plt.bar(bar_positions[len(cities_key):len(cities_key)+len(products_key)], products_values, width, color='g', label='Product')
plt.bar(bar_positions[len(cities_key)+len(products_key):], SalesMethods_values, width, color='b', label='SalesMethod')
plt.xlabel('Category')
plt.ylabel('Count')
plt.title('Daily Operating Margin Analysis')
all_labels = cities_key + products_key + SalesMethods_key
plt.xticks(bar_positions, all_labels, rotation=15)
plt.legend()
plt.show()