나의 기록
[Python] 데이터 시각화 본문
1. matplotlib.pyplot
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 Plot')
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()
- 스타일 설정하기
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o')
plt.show()
- 라벨(범례) 붙여주기
범례 붙이기
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o', label='Data Series')
# 범례 붙이는 또 다른 방법 .legend
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o')
ax.legend(['Data Series'])
- 축 , 제목 입력하기
#1 label
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o')
ax.legend(['Data Series'])
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_title('Title')
plt.show()
- 텍스트 추가하기
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o')
ax.legend(['Data Series'])
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_title('Title')
ax.text(3, 3, 'Some Text', fontsize = 12)
plt.show()
ax.text(2, 2, 'Some Text 2', fontsize = 10)
이거 추가하면,
이렇게 나옴
- 그래프를 크게 만들어보자!
plt.figure(figsize = (8,6))
x = [1,2,3,4,5]
y = [2,4,6,8,10]
plt.plot(x, y)
plt.show
- 그래프 그리기 - 차트
Line Plot (선 그래프)
- 선 그래프는 데이터 간의 연속적인 관계를 시각화하는 데에 적합합니다.
- 주로 시간의 흐름에 따른 데이터의 변화를 보여줍니다.
- 자료 유형: 연속적인 데이터의 추이를 보여줄 때 사용됩니다.
- 활용: 시간에 따른 데이터의 변화, 추세를 보여줄 때 효과적입니다.
import pandas as pd
import matplotlib.pyplot as plt
plt.figure(figsize = (10,6))
df = pd.DataFrame({'date': ['2023-01-01', '2023-01-02', '2023-01-03'],
'value': [10, 15, 8]})
df['date'] = pd.to_datetime(df['date'])
plt.plot(df['date'], df['value'])
plt.xlabel('date')
plt.ylabel('valute')
plt.title('Example')
plt.show()
=> 한글 글자가 깨져서 일단 영어로 기입했음.
표 너무 작아서 figure함수 작성해줌
- Line 그래프 다른 예시
import seaborn as sns
data = sns.load_dataset('flights')
data_grouped = data[['year', 'passengers']].groupby('year').sum().reset_index()
data_grouped
plt.plot(data_grouped['year'], data_grouped['passengers'])
plt.xlabel('year')
plt.ylabel('passengers')
plt.show
Bar Plot (막대 그래프)
- 막대 그래프는 범주형 데이터를 나타내며, 각각의 막대로 값의 크기를 비교하는 데에 사용됩니다.
- 자료 유형: 범주형 데이터 간의 비교를 나타낼 때 주로 사용됩니다.
- 활용: 카테고리 별로 값의 크기나 빈도를 시각적으로 비교할 때 유용합니다.
df = pd.DataFrame({
'도시': ['서울', '부산', '대구', '인천'],
'인구': [990, 250, 250, 290]
})
df
plt.bar(df['도시'], df['인구'])
plt.xlabel('City')
plt.ylabel('Population')
plt.title('Population by city')
plt.show()
아놔 한글이 깨져서 나오는데 모르겠다
Histogram (히스토그램)
- 히스토그램은 연속된 데이터의 분포를 보여줍니다. 주로 데이터의 빈도를 시각화하여 해당 데이터의 분포를 이해하는 데 사용됩니다.
- 자료 유형: 연속형 데이터의 분포를 보여줄 때 사용됩니다.
- 활용: 데이터의 빈도나 분포, 패턴을 이해하고자 할 때 유용합니다.
import matplotlib.pyplot as plt
import numpy as np
# 데이터 생성 (랜덤 데이터)
data = np.random.randn(1000)
# 히스토그램 그리기
plt.hist(data, bins=30)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()
여기서 bins => 몇 개의 구간을 둬서 표현을 할건지
데이터가 분포될 구간들이 존재할건데 그 구간을 어떻게 설정할지에 대한 값
Pie Chart (원 그래프)
- 원 그래프는 전체에서 각 부분의 비율을 보여줍니다. 주로 카테고리별 비율을 비교할 때 사용됩니다.
- 자료 유형: 범주형 데이터의 상대적 비율을 시각화하는 데 사용됩니다.
- 활용: 전체에 대한 각 범주의 비율을 보여줄 때 유용하며, 주로 비율을 비교하는 데 사용됩니다.
import matplotlib.pyplot as plt
# 데이터 생성
sizes = [30, 20, 25, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']
# 원 그래프 그리기
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('Pie Chart')
plt.show()
Box Plot (박스 플롯)
- 박스 플롯은 데이터의 분포와 이상치를 시각적으로 보여줍니다. 중앙값, 사분위수, 최솟값, 최댓값 등의 정보를 제공하여 데이터의 통계적 특성을 파악하는 데 사용됩니다.
- 자료 유형: 연속형 데이터의 분포와 이상치를 시각화하는 데 주로 사용됩니다.
- 활용: 데이터의 중앙값, 사분위수(25%, 50%, 75% 위치의 값), 최소값, 최대값, 이상치를 한눈에 파악할 수 있습니다.
1. 실습해보기
iris = sns.load_dataset("iris")
iris
2.
sepal_lengths_list = [iris[iris['species'] == s]['sepal_length'] for s in iris['species']. unique()]
sepal_lengths_list
plt.boxplot(sepal_lengths_list, labels = species)
plt.xlabel('Species')
plt.ylabel('Sepal Length')
plt.title("Box Plot")
plt.show()
또 다른 방법
sns.boxplot(x='species', y = 'sepal_length', data = iris)
plt.show()
Scatter Plot (산점도)
- 산점도는 두 변수 간의 관계를 점으로 표시하여 보여주는 그래프입니다.
- 두 변수 간의 상관 관계를 보여주고, 각 점이 데이터 포인트를 나타내며, 그 점들이 어떻게 분포되어 있는지 시각적으로 확인할 수 있습니다.
- 자료 유형: 두 변수 간의 관계 및 상관관계를 보여줄 때 사용됩니다.
- 활용: 변수 간의 관계, 군집, 이상치를 확인하고자 할 때 유용합니다.
plt.scatter(iris['petal_length'], iris['petal_width'])
plt.xlabel('Petal length')
plt.ylabel('Petal width')
plt.show()
- 상관관계 확인하기
- 양의 상관관계: 산점도에서 점들이 오른쪽 위 방향으로 일직선으로 분포되어 있을 때를 말합니다. 즉, 하나의 변수가 증가할 때 다른 변수도 증가하는 경향이 있습니다.
- 음의 상관관계: 산점도에서 점들이 왼쪽 위 방향으로 일직선으로 분포되어 있을 때를 말합니다. 하나의 변수가 증가할 때 다른 변수는 감소하는 경향이 있습니다.
- 무상관 관계: 산점도에서 점들이 어떤 방향으로도 일직선으로 분포하지 않고 무작위로 퍼져 있을 때를 말합니다. 즉, 두 변수 간에는 상관관계가 거의 없는 것으로 보입니다.
- 상관관계의 강도 확인하기
- 점들의 모임: 점들이 더 밀집된 곳은 상관관계가 높다는 것을 나타낼 수 있습니다.
- 점들의 방향성: 일직선에 가까운 분포일수록 상관관계가 강할 가능성이 높습니다.
- 상관계수 계산: 피어슨 상관계수와 같은 통계적 방법을 사용하여 상관관계의 정도를 수치적으로 계산할 수 있습니다.
- 피어슨 상관계수(Pearson correlation coefficient)는 두 변수 간의 선형적인 관계를 측정하기 위한 통계적인 방법 중 하나입니다. 주로 연속형 변수들 간의 상관관계를 평가하는 데 사용됩니다.
- 피어슨 상관계수의 특징:
- 범위: -1에서 1 사이의 값을 가집니다.
- 양의 상관관계: 1에 가까울수록 강한 양의 선형관계를 나타냅니다.
- 음의 상관관계: -1에 가까울수록 강한 음의 선형관계를 나타냅니다.
- 무상관 관계: 0에 가까울수록 선형관계가 거의 없거나 약한 관계를 가집니다.
그래프 유형 | 자료 유형 | 특징 |
Line Plot | 연속형 데이터 | 데이터의 변화 및 추이를 시각화 |
Bar Plot | 범주형 데이터 | 카테고리 별 값의 크기를 시각적으로 비교 |
Histogram | 연속형 데이터 | 데이터 분포, 빈도, 패턴 등을 이해 |
Pie Chart | 범주형 데이터의 비율 | 범주별 상대적 비율을 부채꼴 모양으로 시각화 |
Box Plot | 연속형 데이터의 분포 | 중앙값, 사분위수, 최소값, 최대값, 이상치 확인 |
Scatter Plot | 두 변수 간 관계 | 변수 간의 관계, 군집, 이상치 등 확인 |
'개발일지 > Python' 카테고리의 다른 글
[Python] 데이터 분석 기초 과제 (1) | 2024.01.26 |
---|---|
[Python] 데이터 집계 , Group by, Pivot table (0) | 2024.01.25 |
[Python] 데이터 병합, concat()함수, merge()함수 (0) | 2024.01.25 |
[Python] 데이터전처리(2) Boolean Indexing, (1) | 2024.01.25 |
[Python] 1.데이터 전처리 (데이터저장,불러오기,컬럼,인덱스,데이터확인,.loc,.iloc) (0) | 2024.01.24 |