๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
HTML์์ Python์ ์ฌ์ฉํ ์ ์๋ PyScript (4) ๋ณธ๋ฌธ
HTML์์ Python์ ์ฌ์ฉํ ์ ์๋ PyScript (4)
์ง์ง์ํ์นด 2022. 11. 25. 14:38<๋ณธ ๋ธ๋ก๊ทธ๋ itadventrue ๋์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-)>
https://itadventure.tistory.com/545
๐ CSV ์ฝ์ด์ ๊ทธ๋ํ ์ถ๋ ฅ
โ Dataset ๋ก๋
https://www.kaggle.com/datasets/surajjha101/bigbasket-entire-product-list-28k-datapoints
์ด ๋ฐ์ดํฐ ์ธํธ์๋ ๊ฐ๋จํ ์๋ฏธ๋ฅผ ๊ฐ์ง 10๊ฐ์ ์์ฑ์ด ํฌํจ
- index - ๋จ์ํ ์ธ๋ฑ์ค!
- product - ์ ํ์ ์ ๋ชฉ(๋์ด๋ ๋๋ก)
- category - ์ ํ์ด ๋ถ๋ฅ๋ ์นดํ ๊ณ ๋ฆฌ
- sub_category - ์ ํ์ด ๋ณด๊ด๋ ํ์ ์นดํ ๊ณ ๋ฆฌ
- brand - ์ ํ์ ๋ธ๋๋
- sale_price - ์ฌ์ดํธ์์ ์ ํ์ด ํ๋งค๋๋ ๊ฐ๊ฒฉ
- market_price - ์ ํ์ ์์ฅ ๊ฐ๊ฒฉ
- type - ์ ํ์ด ์ํ๋ ์ ํ
- rating - ์ ํ์ด ์๋น์๋ก๋ถํฐ ๋ฐ์ ๋ฑ๊ธ
- description - ๋ฐ์ดํฐ ์ธํธ์ ๋ํ ์ค๋ช (์์ธํ ๋ด์ฉ)
FE๋ฅผ ์ํํ๋ ๋์ "ํ ์ธ"์ (marketprice - saleprice) / market_price * 100์ผ๋ก ์์ฑ
์ฌ๊ธฐ์์ ์๋น์๊ฐ ์ ์ ๋ ์ข์์ง๋ ๊ฒ์ ์ป๋ ๋ฐ ๋์์ด ๋จ
โ ํ๋ค์ค(Pandas)๋ก CSV ์ฝ๊ธฐ
<html>
<head>
<title>
Read CSV with Pandas using PyScript
</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<style type="text/css">
table.dataframe th {
background-color: #EA6153 !important;
color: white !important;
text-align:center !important;
padding: 5px 15px;
font-size:9pt !important;
}
table.dataframe td {
color: black !important;
text-align:center !important;
padding: 5px 15px;
font-size:9pt !important;
}
table.dataframe tr {
background-color: #FFFFFF !important;
}
table.dataframe tr:nth-child(odd) {
background-color: #E9E9E9 !important;
}
</style>
<py-env>
- pandas
</py-env>
</head>
<body style="padding:20px;">
<h2>ํ์ด์คํฌ๋ฆฝํธ์์ ํ๋ค์ค(Pandas)๋ก CSV ์ฝ๊ธฐ</h1>
<div id="csv" style="margin-top:10px"></div>
<py-script>
import pandas as pd
from pyodide.http import open_url
# URL ์์ csv ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ํ๋ค์ค ๋ฐฐ์ด๋ก ๋ณํํฉ๋๋ค.
df = pd.read_csv(open_url("BigBasketProducts.csv"))
# ์ถ๋ ฅํ HTML ์์๋ฅผ ์ ํ
csv = Element('csv')
# ํด๋น HTML ์์์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
csv.write(df)
</py-script>
</body>
</html>
๋ชจ๋ ํ์ ์ถ๋ ฅํ๋ ค๋ฉด ๋ฐ ์ฝ๋ ์ถ๊ฐ
pd.set_option('display.max_rows', None)
๐ "๋ธ๋๋๋ณ ํ์ ํ๊ท "์ผ๋ก ๊ทธ๋ํ ์ถ์ถํ๊ธฐ
โ ์ธ๋ถ ๋ด์ฉ
๋ธ๋๋๋ณ ํ์ ํ๊ท ์ ๊ตฌํ ์ ์๋๋ก ์์ค๋ฅผ ๊ตฌ์ฑ
# ํ์ ์ ์ถ์ถ๋์์ผ๋ก ๋ธ๋๋๋ณ๋ก ๊ทธ๋ฃนํ
df_group = df[['rating']].groupby(df['brand'])
๊ฒฐ๊ณผ ์ถ๋ ฅ
csv.write(df_group.mean())
โ ํ๊ท ์ถ์ถ ์ฝ๋ ๊ตฌํ
<html>
<head>
<title>
Read CSV with Pandas using PyScript
</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<style type="text/css">
table.dataframe th {
background-color: #EA6153 !important;
color: white !important;
text-align:center !important;
padding: 5px 15px;
font-size:9pt !important;
}
table.dataframe td {
color: black !important;
text-align:center !important;
padding: 5px 15px;
font-size:9pt !important;
}
table.dataframe tr {
background-color: #FFFFFF !important;
}
table.dataframe tr:nth-child(odd) {
background-color: #E9E9E9 !important;
}
</style>
<py-env>
- pandas
</py-env>
</head>
<body style="padding:20px;">
<h2>ํ์ด์คํฌ๋ฆฝํธ์์ ํ๋ค์ค(Pandas)๋ก CSV ์ฝ๊ธฐ</h1>
<div id="csv" style="margin-top:10px"></div>
<py-script>
import pandas as pd
from pyodide.http import open_url
# URL ์์ csv ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ํ๋ค์ค ๋ฐฐ์ด๋ก ๋ณํํฉ๋๋ค.
df = pd.read_csv(open_url("BigBasketProducts.csv"))
# ๋ธ๋๋๋ณ ํ์ ํ๊ท ์ ๊ตฌํ ์ ์๋๋ก ์์ค๋ฅผ ๊ตฌ์ฑ
df_group = df[['rating']].groupby(df['brand'])
# ๋ชจ๋ ํ ์ถ๋ ฅ
pd.set_option('display.max_rows', None)
# ์ถ๋ ฅํ HTML ์์๋ฅผ ์ ํ
csv = Element('csv')
# ํด๋น HTML ์์์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
csv.write(df_group.mean())
</py-script>
</body>
</html>
โ NaN ๋ ๊ทธ๋ํ์์ ์ฌ์ฉํ๊ธฐ ๊ณค๋ํ๋ 0์ผ๋ก ๋ณ๊ฒฝ
df_group = df[['rating']].fillna(0).groupby(df['brand'])
โ Y ์ถ์ ์๋์์ ์๋ก ์์๊ฐ ๋์ด
plt.gca().invert_yaxis()
โ ๊ทธ๋ํ ์ฝ๋ ๊ตฌํ
<html>
<head>
<title>
Read CSV with Pandas using PyScript
</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<style type="text/css">
table.dataframe th {
background-color: #EA6153 !important;
color: white !important;
text-align:center !important;
padding: 5px 15px;
font-size:9pt !important;
}
table.dataframe td {
color: black !important;
text-align:center !important;
padding: 5px 15px;
font-size:9pt !important;
}
table.dataframe tr {
background-color: #FFFFFF !important;
}
table.dataframe tr:nth-child(odd) {
background-color: #E9E9E9 !important;
}
</style>
<py-env>
- pandas
- matplotlib
</py-env>
</head>
<body style="padding:20px;">
<h2>ํ์ด์คํฌ๋ฆฝํธ์์ ํ๋ค์ค(Pandas)๋ก CSV ์ฝ๊ธฐ</h1>
<div id="pltdiv"></div>
<div id="csv" style="margin-top:10px"></div>
<py-script>
import pandas as pd
from pyodide.http import open_url
# URL ์์ csv ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ํ๋ค์ค ๋ฐฐ์ด๋ก ๋ณํํฉ๋๋ค.
df = pd.read_csv(open_url("BigBasketProducts.csv"))
# ๋ธ๋๋๋ณ ํ์ ํ๊ท ์ ๊ตฌํ ์ ์๋๋ก ์์ค๋ฅผ ๊ตฌ์ฑ + Nan ๊ฐ์ 0์ผ๋ก + rating ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
df_group = df.fillna(0).groupby('brand')[['rating']].mean().sort_values(by='rating', ascending=False)
#df_group.columns = ['brand', 'rating']
# ๋ชจ๋ ํ ์ถ๋ ฅ
pd.set_option('display.max_rows', None)
# ์ถ๋ ฅํ HTML ์์๋ฅผ ์ ํ
csv = Element('csv')
# ํด๋น HTML ์์์ ํ์ ํ๊ท ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ
csv.write(df_group)
import matplotlib.pyplot as plt
plt.rcParams.update({'font.size': 7})
fig = plt.figure(figsize=(5, 20))
plt.plot(
df_group['rating'].to_list(),
df_group.index.to_list(),
label='Rating of Brand' )
plt.gca().invert_yaxis()
pltdiv = Element('pltdiv')
pltdiv.write(fig)
</py-script>
</body>
</html>
'๐ฉโ๐ป ๋ฐฑ์๋(Back-End) > Node js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTML์์ Python์ ์ฌ์ฉํ ์ ์๋ PyScript (6) (0) | 2022.11.25 |
---|---|
HTML์์ Python์ ์ฌ์ฉํ ์ ์๋ PyScript (5) (0) | 2022.11.25 |
HTML์์ Python์ ์ฌ์ฉํ ์ ์๋ PyScript (3) (0) | 2022.11.25 |
HTML์์ Python์ ์ฌ์ฉํ ์ ์๋ PyScript (2) (0) | 2022.11.25 |
HTML์์ Python์ ์ฌ์ฉํ ์ ์๋ PyScript (1) (0) | 2022.11.25 |