728x90
반응형

 티스토리 

날짜별 열의 구성 비율을 누적 막대 그래프로 시각화하기

주어진 데이터를 사용하여 날짜별 열의 구성 비율을 계산하고, 이를 누적 막대 그래프로 시각화.

한글 폰트 깨짐 현상이 있어 폰트를 별도로 설정하여 그래프를 더 가독성 있게 표현했습니다.

1. 코드리뷰

Python
import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'Malgun Gothic'
plt.rcParams['axes.unicode_minus'] = False


# 날짜별 열의 구성 비율을 나타내는 데이터프레임 생성
df_data = pd.DataFrame({
    'date': ['2023-10-13', '2023-10-14', '2023-10-15', '2023-10-16', '2023-10-17', '2023-10-18'],
    'test1': [134, 87, 32, 35, 1543, 332],
    'test2': [3434, 44, 567, 45, 32, 675],
    'test3': [120, 435, 122, 2344, 124, 125],
    'test4': [98, 11, 333, 13323, 3, 135],
    'test5': [24, 367, 235, 46, 456, 765],
    'test6': [344, 234, 323, 98, 34, 234]
})


# 각 열의 날짜별 구성 비율 계산
df_percentage = df_data.div(df_data.sum(axis=1), axis=0)


# 누적 막대 그래프 생성
fig, ax = plt.subplots(figsize=(10, 6))
ax = df_percentage.plot(kind='bar', stacked=True, ax=ax)

# 그래프에 제목과 레이블 추가
ax.set_title('날짜별 열의 구성 비율')
ax.set_xlabel('날짜')
ax.set_ylabel('누적 비율')

# X축 레이블 가로로 회전
ax.set_xticklabels(ax.get_xticklabels(), rotation=0)


# 그래프 표시
plt.show()
코드를 사용할 때는 주의하시기 바랍니다. 자세히 알아보기
content_copy

코드 설명

이 데이터프레임에서 각 열은 날짜별 데이터를 나타냅니다. 예를 들어, test1 열은 2023년 10월 13일부터 18일까지의 데이터를 나타냅니다.

다음으로, 각 열의 날짜별 구성 비율을 계산합니다. 다음과 같이 div() 함수를 사용하여 계산할 수 있습니다.
각 열의 합계를 구하고, 그 합계를 각 열의 데이터로 나누어 구성 비율을 계산합니다.

kind='bar' 옵션을 사용하여 막대 그래프를 생성하고, stacked=True 옵션을 사용하여 각 막대를 누적하여 표시합니다.

날짜별 열의 구성 비율을 나타냅니다. 예를 들어, 2023년 10월 13일에는 test1 열이 전체 데이터의 27.4%를 차지하고, test2 열이 12.6%를 차지합니다.

이 그래프를 사용하여 날짜별 열의 구성 비율을 한눈에 확인할 수 있습니다.

결과 : 

 

 

2. 매출액 비중 변화를 누적 막대 그래프로 시각화하기

이 글에서는 매출액 비중 변화를 누적 막대 그래프로 시각화하는 방법을 소개합니다.

먼저, 매출액 데이터를 나타내는 데이터프레임을 생성합니다. 예를 들어, 다음과 같은 데이터프레임을 생성할 수 있습니다.

Python
df_data = pd.DataFrame({
    'year': [2022, 2023, 2024],
    'division': ['A', 'B', 'C'],
    'revenue': [1000, 2000, 3000]
})
코드를 사용할 때는 주의하시기 바랍니다. 자세히 알아보기
content_copy

이 데이터프레임에서 각 열은 다음과 같은 의미를 나타냅니다.

  • year: 연도
  • division: 부문
  • revenue: 매출액

다음으로, 각 부문의 매출액 비중을 계산합니다. 다음과 같이 div() 함수를 사용하여 계산할 수 있습니다.

Python
df_percentage = df_data.groupby('division')['revenue'].apply(lambda x: x / x.sum())
코드를 사용할 때는 주의하시기 바랍니다. 자세히 알아보기
content_copy

이 코드는 각 부문의 매출액 데이터를 그룹화하고, 각 그룹의 매출액을 합산합니다. 그 후, 각 그룹의 매출액 합계를 전체 매출액으로 나누어 비중을 계산합니다.

마지막으로, 누적 막대 그래프를 생성합니다. 다음과 같이 plot() 함수를 사용하여 생성할 수 있습니다.

Python
fig, ax = plt.subplots(figsize=(10, 6))
ax = df_percentage.plot(kind='bar', stacked=True, ax=ax)
코드를 사용할 때는 주의하시기 바랍니다. 자세히 알아보기
content_copy

이 코드는 kind='bar' 옵션을 사용하여 막대 그래프를 생성하고, stacked=True 옵션을 사용하여 각 막대를 누적하여 표시합니다.

다음은 위 코드를 실행한 결과입니다.

<AxesSubplot: xlabel='연도' ylabel='누적 비율'>

이 그래프는 매출액 비중 변화를 나타냅니다. 예를 들어, 2022년에는 부문 A가 전체 매출액의 50%를 차지하고, 부문 B가 30%를 차지합니다. 2023년에는 부문 A의 비중이 33.3%로 감소하고, 부문 B의 비중이 50%로 증가합니다. 2024년에는 부문 A의 비중이 25%로 감소하고, 부문 C의 비중이 50%로 증가합니다.

이 그래프를 사용하여 매출액 비중 변화를 한눈에 확인할 수 있습니다.

마무리

- 이번 포스팅은 항목별 합산 비율 누적막대 그래프 그리는 코드에 대해 알아봤습니다.

 

궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

날짜열과 시간열을 하나의 열에 병합하기 

날짜열과 시간열을 하나의 열에 병합에 대해 알아보자.

1. 코드리뷰

  # 예시 데이터프레임 생성
data = {'day': ['2021-11-30', '2021-12-01', '2021-12-02'],
        'hour': [10, 11, 12]}
df = pd.DataFrame(data)

# day열과 hour열을 문자열로 변환하고 공백을 추가하여 합친 후, pd.to_datetime 함수를 사용하여 datetime 타입으로 변환
df['dayhour'] = pd.to_datetime(df['day'].astype(str) + ' ' + df['hour'].astype(str))

# 결과 출력
print(df)


# 케이스 2 
data = {'day': ['2021-11-30', '2021-12-01', '2021-12-02'],
        'hour': ['10:00:00', '11:00:00', '12:00:00']}
df = pd.DataFrame(data)

# day열과 hour열을 문자열로 변환하고 합친 후, pd.to_datetime 함수를 사용하여 datetime 타입으로 변환하고 format 인자를 사용하여 형식을 지정
df['dayhour'] = pd.to_datetime(df['day'].astype(str) + df['hour'].astype(str), format='%Y-%m-%d%H:%M:%S')

# 결과 출력
print(df)

 

마무리

- 이번 포스팅은  datetime형식의 열병합에 대해 알아봤습니다.

 

궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

[파이썬초보] PANDAS pd.merge() 데이터 열 합치기

1. pd.merge()

Python의 Pandas 라이브러리에서 pd.merge() 함수는 공통 열을 기준으로 두 개 이상의 DataFrame을 결합하는 데 사용됩니다. 열을 기준으로 DataFrame을 병합하는 방법에 대한 예시를 제공합니다

 

이 예시에서 df1과 df2라는 두 개의 DataFrame이 있습니다. 두 DataFrame은 'ID'라는 공통 열을 갖고 있습니다. 이 공통 열을 기준으로 DataFrame을 병합하기 위해 pd.merge() 함수를 사용하고 on 매개변수를 'ID'로 지정합니다.
결과로 나오는 DataFrame merged_df에는 'ID' 값이 일치하는 df1과 df2의 행이 포함됩니다. 'ID' 열은 DataFrame 병합의 키로 사용됩니다. 병합된 DataFrame은 두 DataFrame의 모든 열을 포함합니다.
출력 결과는 다음과 같습니다.

 

Result
Result

2. 결론

기본적으로 pd.merge()는 내부 조인을 수행하여 두 DataFrame 사이의 공통된 행만 포함합니다. 두 DataFrame의 모든 행을 포함하려면 how 매개변수를 'outer'로 설정하여 외부 조인을 수행할 수 있습니다.
또한, on 매개변수에 열 이름의 리스트를 전달하여 여러 열을 기준으로 DataFrame을 병합할 수도 있습니다. 예를 들어 on=['column1', 'column2']와 같이 사용할 수 있습니다.
pd.merge() 함수는 왼쪽 조인, 오른쪽 조인 및 여러 열에 대한 병합과 같은 다양한 유형의 병합을 처리하는 옵션을 제공합니다. 

마무리

- pd.merge() 함수와 해당 매개변수에 대한 자세한 내용은 Pandas 문서를 참조하시기 바랍니다.

 

궁금한 사항은 댓글을 통해서 남겨 주시면 답변을 드리고 있으며,

조금이라도 도움이 되셨다면 채널이 성장하는 데 큰 도움이 되어 주시길 바랍니다.

 

감사합니다.

 

 

728x90
반응형
728x90
반응형

다음은 Python에서 pandas 라이브러리와 함께 dateutil 모듈을 사용하는 예시입니다: python

Copy code

import pandas as pd

from dateutil.parser import parse # 날짜 문자열의 리스트 생성

date_strings = ['2022-01-01', '2022-02-01', '2022-03-01', '2022-04-01'] # dateutil의 parse 함수를 사용하여 날짜 문자열 파싱 parsed_dates = [parse(date) for date in date_strings] # 파싱된 날짜로 pandas Series 생성

dates_series = pd.Series(parsed_dates) # pandas를 사용하여 날짜 기반 작업 수행

# 예를 들어, 각 날짜에서 월을 추출할 수 있습니다.

months = dates_series.dt.month

# 파싱된 날짜와 해당 월 출력

for date, month in zip(dates_series, months): print("날짜:", date, " 월:", month) 이 예시에서는 필요한 모듈인 pandas와 dateutil.parser를 import합니다. 그런 다음, 파싱할 날짜 문자열의 리스트를 생성합니다. 리스트 컴프리헨션을 사용하여 날짜 문자열을 순회하면서 dateutil의 parse 함수를 사용하여 파싱합니다. 이 함수는 자동으로 날짜 문자열의 형식을 감지하고 datetime 객체로 변환합니다.

다음으로, 파싱된 날짜를 pd.Series 생성자에 전달하여 pandas Series를 생성합니다. 이를 통해 pandas가 제공하는 강력한 날짜 및 시간 기능을 활용할 수 있습니다. 예시에서는 Series의 dt.month 속성을 사용하여 각 날짜의 월 구성 요소를 추출합니다. 이는 월 값을 포함하는 새로운 Series를 반환합니다.

마지막으로, 반복문을 사용하여 파싱된 날짜와 해당하는 월을 출력합니다.

pandas와 dateutil을 결합하면 DataFrame이나 Series에서 날짜 및 시간 데이터를 효율적으로 처리하고 조작할 수 있으며, 다양한 작업을 수행하고 분석이나 추가 처리를 위해 특정 날짜 구성 요소를 추출할 수 있습니다.

728x90
반응형
728x90
반응형

안녕하세요! 데이터 분석은 현대 비즈니스와 의사 결정에 필수적인 요소로 자리 잡았습니다. 이번 글에서는 파이썬을 사용하여 데이터 분석을 수행하는 방법과 실전에서 유용한 팁을 알려드리겠습니다. 데이터의 힘을 빌려 통찰력을 얻고 가치 있는 정보를 추출해보세요.

데이터 수집과 전처리: 데이터 분석의 첫 단계는 데이터 수집과 전처리입니다. 웹 스크래핑, API 호출, 데이터베이스 연동 등 다양한 방법으로 데이터를 수집한 후, 결측치 처리, 이상치 제거, 데이터 타입 변환 등의 전처리 작업을 진행합니다. 파이썬의 pandas 라이브러리를 활용하여 데이터를 효과적으로 다루는 방법을 알아보세요.

 *. 내가 만든 데이터 분석툴 라이브러리의 90%이상은  판다스 라이브러리를 쓰고있다.

데이터 시각화: 데이터 분석 결과를 시각화하여 직관적으로 이해하고 전달하는 것은 매우 중요합니다. matplotlib, seaborn, plotly 등의 시각화 라이브러리를 활용하여 그래프, 히트맵, 산점도 등 다양한 시각화 기법을 적용해보세요. 데이터의 패턴과 관계를 시각적으로 확인하여 인사이트를 얻을 수 있습니다.

*. 내마음대로 뽑는 데이터 시각화 1대장 라이브러리는 matplotlib이다.

아래 내용은 데이터 분석 중 고수가 되면 추가로 공부 하면 도움이 됩니다.
기초 통계 분석: 통계 분석은 데이터의 특성을 이해하고 패턴을 파악하는 데 도움을 줍니다. 평균, 분산, 상관관계 등의 기초 통계량을 계산하고, t-검정, ANOVA, 회귀 분석 등의 통계적 방법을 사용하여 데이터 간의 관계를 분석해보세요. 파이썬의 scipy, statsmodels 라이브러리를 활용하여 통계 분석을 수행할 수 있습니다.

머신러닝을 활용한 예측 모델링: 데이터 분석은 머신러닝 기법을 활용하여 예측 모델을 구축하는 데에도 활용됩니다. scikit-learn 라이브러리를 사용하여 회귀, 분류, 군집화 등의 머신러닝 모델을 구현하고 평가해보세요. 데이터를 학습시키고 예측을 수행하여 실제 문제에 대한 가치 있는 결론을 도출해내는 방법을 익혀보세요.

결론: 파이썬은 데이터 분석에 필수적인 도구로서 다양한 라이브러리와 기능을 제공합니다. 이 글에서는 데이터 수집, 전처리, 시각화, 통계 분석, 머신러닝 등 다양한 주제를 다루면서 실전에서 유용한 데이터 분석 팁을 제공할 예정입니다. 데이터의 힘을 빌려 의사 결정을 지원하고 문제를 해결하는데 파이썬을 활용해보세요. 데이터 분석의 매력적인 세계에 빠져보시기 바랍니다. 행운을 빕니다!

728x90
반응형

+ Recent posts