개인공부

[Python] 시각화 그래프

여연찌 2024. 5. 10. 13:56

matplotlib.pyplot

 

2차원 데이터 시각화

import matplotlib.pyplot as plt

x = [1,2,3,4,5]
y = [2,4,6,8,10]

plt.plot(x,y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Example')
plt.show()

 

판다스 데이터프레임으로 시각화

import pandas as pd

df = pd.DataFrame({
    'A':[1,2,3,4,5],
    'B':[5,4,3,2,1]
})
df

df.plot(x='A', y='B')
plt.show()

 

스타일, 라벨 지정

df.plot(x='A', y='B', color='green', linestyle='--',marker='o')       
# 스타일 추가
plt.show()


df.plot(x='A',y='B',color='red',linestyle='--',marker='o',label='Data Series')       
# 라벨 지정
plt.show()

ax = df.plot(x='A',y='B',color='red',linestyle='--',marker='o')
ax.legend(['Data Series'])
# 라벨 지정
plt.show()

 

# linestyle

'-' 실선

'--' 대시선

':' 점선

'-.' 점-대시선

Matplotlib 공식 문서 - Line API

 

# marker

'o' 원

'^' 삼각형

's' 사각형

'+' 플러스

'x' 엑스

Matplotlib 공식 문서 - Marker API

 

 

plt.figure()

그래프의 가로,세로 크기를 인치 단위로 설정

 

 

 

Line graph

import seaborn as sns
data = sns.load_dataset('flights')

data_grouped = data[['year','passengers']].groupby('year').sum().reset_index()

plt.plot(data_grouped['year'],data_grouped['passengers'])   
# line 그래프
plt.xlabel('year')
plt.ylabel('passengers')
plt.show()          
# 승객수가 연도별로 우상향

Bar Plot( 막대 그래프 )

df = pd.DataFrame({
    '도시': ['서울','부산','대구','인천'],
    '인구':[990,250,250,290]
})

plt.bar(df['도시'], df['인구'])     # 막대그래프
plt.xlabel('도시')
plt.ylabel('인구')
plt.title('도시별 인구 수')

plt.show()

Histogram ( 히스토그램 )

import numpy as np
data = np.random.randn(1000)      
# array 형태로 1000개의 데이터가 랜덤하게 생성됨
data.shape         
# .shape 열과 행의 데이터가 어떻게 분포되어있는지 확인

plt.hist(data, bins=30)     
# bins 몇개의 구간별로 표현할 것인지 범위 설정
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()

alpha=

투명도

0~1 사이로 설정, 1에 가까울 수록 색이 진하며 0에 가까울 수록 투명도가 커짐

 

Pie Chart( 원 그래프 )

sizes = [30,20,25,15,10]
labels = ['A','B','C','D','D']
plt.pie(sizes,labels=labels)
plt.title('Pie Chart')
plt.show()

Box Plot

iris = sns.load_dataset("iris")

species = iris['species'].unique()
sepal_lengths_list = [iris[iris['species'] == s]['sepal_length'].tolist() for s in iris['species'].unique()]

plt.boxplot(sepal_lengths_list, labels=species)
plt.show()      
# 가운데 노란색 줄은 중앙값, 
# 제일 위에 박스의 선은 75% 아래 박스의 선은 25%, 
# 제일 위에 선은 최대 ,아래 선은 최소, 
# 점은 아웃라이어(평균이나 값에 영향을 줄 수 있는 데이터)

 

sns.boxplot(x='day', y='total_bill', data=tips_data, palette='Set3')
plt.title('Total Bill Distribution by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Total Bill Amount')
plt.show()

 

plt.boxplot(x축,y축,data 작성)

 

 

 

Scatter Plot ( 산점도 )

plt.scatter(iris['petal_length'],iris['petal_width'])
plt.xlabel('Petal length')
plt.ylabel('Petal width')
plt.show()      
# 관계성이 있다면 뭉쳐있음

 

 

 

 

그래프 유형 자료 유형 특징
Line Plot 연속형 데이터 데이터의 변화 및 추이를 시각화
Bar Plot 범주형 데이터 카테고리 별 값의 크기를 시각적으로 비교
Histogram 연속형 데이터 데이터 분포, 빈도, 패턴 등을 이해
Pie Chart 범주형 데이터의 비율 범주별 상대적 비율을 부채꼴 모양으로 시각화
Box Plot 연속형 데이터의 분포 중앙값, 사분위수, 최소값, 최대값, 이상치 확인
Scatter Plot 두 변수 간 관계 변수 간의 관계, 군집, 이상치 등 확인