import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.xlablel('X-axis')
plt.ylabel('Y-axis')
plt.title('Example')
plt.show()
→ 그래프 생성
import pandas as pd
df = pd.DateFrame({
'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()
→ 빨간색 점선과 점 지정 그리고 Data Series라는 이름도 생성됨
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o')
ax.legend('Data Series')
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')
plt.show()
→ x축과 y축 생성 및 title 생성
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()
→ x 3, y 3에 위치하는 곳에 Some Text 생성됨
plt.figure(figsize=(8, 6))
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.show()
→ 'plt.figure(figsize=(8, 6))'에 지정되어 있는 것 처럼 8, 6
만큼 사이즈가 지정됨
import seaborn as sns
data = sns.load_dataset('flights')
→ line 그래프는 시간에 따른 데이터의 변화 추세를 보는데 좋은 시각화 그래프
data_grouped = data [['year', 'passengers']].groupby('year').sum().reset_index()
data_grouped
→ 년도 별로 group by 하기 위해 데이터 가공
plt.plot(data_grouped['year'], data_grouped['passengers'])
plt.xlabel('year')
plt.ylabel('passengers')
plt.show()
→ Line 그래프 생성됨(년도 별 총 승객수 변화를 그림)
→ Line 그래프를 가지고 시간에 따른 변화추세를 볼 때 사용하면 좋음
df = pd.DataFrame({
'도시' : ['서울', '부산', '대구', '인천']
'인구' : [990, 250, 250, 290]
})
df
→ 데이터 프레임 생성
plt.bar(df['도시'], df['인구'])
plt.xlabel('도시')
plt.ylebel('인구')
plt.title('도시별 인구 수')
plt.show()
→ 막대그래프 생성
numpy
: 여러가지 숫자 및 연상 등과 같은 기능을 제공하는 파이썬 패키지 같은 것import numpy as np
data = np.random.randn(1000)
data.shape
→ 1000개의 데이터 생성
plt.hist(data, bins=30)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()
→ Histogram 그래프 생성
▶ bins
: 구간별로 여러 데이터가 있을 때 몇개의 구간을 둬서 표현할 것인지에 대한 값(구간들에 대한 범위를 어떻게 설정할 것인지)
sizes = [30, 20, 25, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']
plt.pie(sizes, labels=labels)
plt.title('Pie Chart')
plt.show()
→ A, B, C, D, E의 각 비율이 어느 정도 차지하는지에 대한 그래프
iris = sns.load_dataset("iris")
iris
→ 꽃 잎, 꽃받임 길이, 넓이 나타냄
species = iris['species'].unique()
→ 변수에 할당함
sepal_lengths_list = [lris[iris['species'] == s] ['sepal_length'].tolist() for s in iris['species']]
len(sepal_lengths_list)
→ 총 3가지 값의 list가 구성됨
len(sepal_lengths_list[0])
→ 각각의 list 별로 몇 개가 구성되었는지 확인하면 50개가 있다고 확인됨
plt.boxplot(sepal_lengths_list, labels = species)
plt.xlabel('Species')
plt.ylabel('Box plot')
plt.show()
→ x축에서 카테고리가 나눠지고, y축으로는 해당하는 값의 분포들이 나오는 그래프 생성됨
--> 각각의 꽃의 종류에 따라 데이터가 50개씩 구성되어 있는 형태로 만든 것이고, 데이터의 분포가 어떻게 형성되고 있는지 박스플롯을 통해 그린 것
sns.boxplot(x='species', y='sepal_length', data=iris)
plt.show()
→ 위와 비슷한 그래프 생성됨
산점도
: 두 변수간의 관계를 점으로 표시해서 보여주는 그래프 plt.scatter(iris['petal_length'], iris['petal_width'])
plt.xlabel('Petal length')
plt.ylabe('Petal width')
plt.show()
→ Scatter 차트가 그려짐
→ 점들이 여러개 찍혀있는데 선의 형태로 우측으로 증가하는 그래프
ㄴ 이것을 보고 어느정도 관계성이 있다는 것을 추측할 수 있음
→ 만약 분개성이 없다면 점들이 일정하지 않고 여러 곳으로 마구잡이로 펼쳐져있을 것임
plt.scatter(iris['sepal_length'], iris['sepal_width'])
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
→ 관계성이 없게 여러 곳으로 분포되어 있음
↓ 관계성이 있는지 정확히 확인하기 어렵기 때문에 수치화하기
corr
는 각각의 상관성을 수치화해서 각 변수마다 상관계수를 뽑아 서로 얼마나 관계가 있는지 확인할 수 있는 메서드iris.corr(numeric_only=True)
→ 숫자 형태의 변수들만 가지고 상관성을 나타내는 것
그래프 유형 | 자료 유형 | 특징 |
---|---|---|
Line Plot | 연속형 데이터 | 데이터의 변화 및 추이를 시각화 |
Bar Plot | 범주형 데이터 | 카테고리 별 값의 크기를 시각적으로 비교 |
Histogram | 연속형 데이터 | 데이터 분포, 빈도, 패턴 등을 이해 |
Pie Chart | 범주형 데이터의 비율 | 범주별 상대적 비율을 부채꼴 모양으로 시각화 |
Box Plot | 연속형 데이터의 분포 | 중앙값, 사분위수, 최솟값, 최댓값, 이상치 확인 |
Scatter Plot | 두 변수 간 관계 | 변수 간의 관계, 군집, 이상치 등 확인 |
피어슨 상관계수
: 두 변수 간의 선형적인 관계를 측정하기 위한 통계적인 방법 중 하나.
주로 연속형 변수(숫자)들 간의 상관관계를 평가하는 데 사용됨
피어슨 상관계수의 특징 :
→ 상관성이 있다고 해서 꼭 그것이 인관관계가 있다는 것은 아님