주류시장 동향 파악하기 - 매출 추이와 성장률

Ryan·2025년 1월 18일

SQL/Python 분석

목록 보기
89/94

1. 산업은 성장하고 있는가?

산업의 전반적인 성장세를 파악하기 위해 매출과 상점 수의 변화를 분석합니다. 이를 통해 매출 성장과 상점 수 증가가 산업의 성장 가능성을 보여주는지 확인할 수 있습니다.

매출 및 상점 수 집계

pd1 = (
    df
    .withColumn("Year", F.year("Date").cast("long"))
    .filter(F.col("Year") < 2023)  # 2023년 데이터 제외
    .groupBy("Year")
    .agg(
        F.sum("SaleDollars").cast("long").alias("SaleDollars_sum"),
        F.countDistinct(F.col("StoreNumber").cast("string")).alias("Store_cnt")
    )
    .orderBy("Year")
    .toPandas()
)
  • groupBy: 데이터를 연도별로 그룹화.
  • sum: 각 그룹의 매출 합계 계산.
  • countDistinct: 고유 상점 수 계산.

매출 성장률 계산

매출 증가 비율을 계산하여 성장세를 파악합니다.

pd2 = (
    df
    .withColumn("Year", F.year("Date").cast("long"))
    .filter(F.col("Year") < 2023)
    .groupBy("Year")
    .agg(
        F.sum("SaleDollars").cast("long").alias("SaleDollars_sum"),
        F.countDistinct(F.col("StoreNumber").cast("string")).alias("Store_cnt")
    )
    .withColumn("SaleDollars_sum_bef", F.lag("SaleDollars_sum").over(W.orderBy("Year")))
    .withColumn(
        "SaleDollars_growth_rate",
        100*(F.col("SaleDollars_sum")-F.col("SaleDollars_sum_bef"))/F.col("SaleDollars_sum_bef")
    )
    .toPandas()
)
  • lag: 이전 연도의 매출 데이터를 가져옴.
  • 성장률 공식: (현재 매출 - 이전 매출) / 이전 매출 * 100

2. 지역별 매출 분석

매출이 좋은 지역을 찾아내고 지역별 성장률을 분석합니다.

지역별 성장률 분석

pd3 = (
    df
    .withColumn("Year", F.year("Date").cast("long"))
    .filter(F.col("Year") < 2023)
    .groupBy("Year", "City")
    .agg(
        F.sum("SaleDollars").cast("long").alias("SaleDollars_sum"),
        F.countDistinct(F.col("StoreNumber").cast("string")).alias("Store_cnt")
    )
    .withColumn("SaleDollars_sum_bef", F.lag("SaleDollars_sum").over(W.partitionBy("City").orderBy("Year")))
    .withColumn(
        "SaleDollars_growth_rate",
        100*(F.col("SaleDollars_sum")-F.col("SaleDollars_sum_bef"))/F.col("SaleDollars_sum_bef")
    )
)

매출 상위 10 지역 확인

# 2022년 매출 상위 10개 지역
top_10_city = (
    pd3
    [pd3.Year == 2022]
    .nlargest(n=10, columns='SaleDollars_sum')['City']
    .tolist()
)

# 상위 10개 지역의 매출 성장 추이 시각화
fig = px.line(
    pd3.loc[pd3.City.isin(top_10_city)],
    x="Year", y="SaleDollars_growth_rate", color="City", hover_data=["City"]
)
fig.update_layout(title_text="지역 별 매출 성장률 추이")
fig.show()

3. 점포별 평균 매출 분석

점포별 매출 집계

점포별 평균 매출과 총 매출의 관계를 분석합니다.

pd4 = (
    df
    .withColumn("Year", F.year("Date").cast("long"))
    .filter(F.col("Year") < 2023)
    .groupBy("Year", "City", "StoreNumber")
    .agg(
        F.sum("SaleDollars").cast("long").alias("SaleDollars_sum")
    )
    .groupBy("Year", "City")
    .agg(
        F.avg("SaleDollars_sum").alias("Store_SaleDollars_avg"),
        F.sum("SaleDollars_sum").alias("SaleDollars_sum")
    )
    .orderBy("Year")
    .toPandas()
)

평균 매출 시각화

fig = px.line(
    pd4,
    x="Year", y="Store_SaleDollars_avg", color="City", hover_data=["City"]
)
fig.update_layout(title_text="지역 별 점포 평균 매출 추이")
fig.show()

매출-점포 매출 평균 상관 관계 분석

fig = px.scatter(
    pd4[pd4.Year == 2022],
    x="SaleDollars_sum", y="Store_SaleDollars_avg", color="City", hover_data=['City']
)
fig.update_layout(title_text="지역 별 점포 평균 매출 & 총 매출 관계")

# 수평선 및 수직선 추가
fig.add_hline(y=400000, line_color='red')
fig.add_vline(x=3500000, line_color='red')
fig.show()

분석 요약 및 결론

분석 요약

  • 산업 성장:
    • 매출과 상점 수가 전체적으로 증가 추세에 있으나, 최근 몇 년간 성장률은 둔화되고 있음.
  • 지역 분석:
    • 매출이 일정 수준 이상 유지되는 지역에 우선 투자 필요.
    • 매출 성장률이 높은 지역을 중심으로 확장 전략 검토.
  • 점포별 매출:
    • 매출과 점포 평균 매출 간의 관계를 통해 수익성이 높은 지역을 도출 가능.

결론

MOUNT VERNON, DEWITT, WINDSOR HEIGHTS, CORALVILLE, DES MOINES와 같은 지역은 매출 성장과 안정성 측면에서 전략적으로 중요한 지역으로 판단됩니다.

0개의 댓글