본문 바로가기
미쳤습니까 휴먼 (AI)

[AI 데이터 분석] Numpy와 Pandas와 Matplotlib 데이터 분석

728x90

본격적으로 데이터 분석을 하기 위해 Numpy와 Pansdas를 사용해보겠다.

둘다 초면이다.

 

Numpy

: Numerical Python 수치적 파이썬이란 뜻으로 파이썬에서 대규모 다차원 배열을 다룰 수 있게 도와주는 라이브러리다. 반복문 없이 배열을 처리할 수 있고, 빠른 연산과 메모리를 효율적으로 사용할 수 있다.

 

Pandas

: 파이썬 라이브러리 중 하나로 구조화된 데이터를 효과적으로 처리하며 저장하고 Numpy와 함께 사용

 

import numpy as np
import pandas as pd

country = pd.Series([5180,12718,141500,32676], index = ['korea', 'japan', 'china', 'usa'], name="country")
print(country, "\n")

Series

 

데이터 프레임

: 여러 개의 Series가 모여서 행과 열을 이룬 데이터, Dictionary를 활용해서 데이터 프레임 생성 가능

import numpy as np
import pandas as pd

# 두 개의 시리즈 데이터가 있습니다.
print("Population series data:")
population_dict = {
    'korea': 5180,
    'japan': 12718,
    'china': 141500,
    'usa': 32676
}
population = pd.Series(population_dict)
print(population, "\n")

print("GDP series data:")
gdp_dict = {
    'korea': 169320000,
    'japan': 516700000,
    'china': 1409250000,
    'usa': 2041280000,
}
gdp = pd.Series(gdp_dict)
print(gdp, "\n")


# 이곳에서 2개의 시리즈 값이 들어간 데이터프레임을 생성합니다.
print("Country DataFrame")

country = pd.DataFrame({
    "population" : population,
    "gdp" : gdp
})
print(country)

Data Frame

 

데이터 프레임에서 원하는 데이터만 출력하고 싶으면  다음과 같이 사용할 수 있다.

import numpy as np
import pandas as pd

population_dict = {
    'korea': 5180,
    'japan': 12718,
    'china': 141500,
    'usa': 32676
}
population = pd.Series(population_dict)

gdp_dict = {
    'korea': 169320000,
    'japan': 516700000,
    'china': 1409250000,
    'usa': 2041280000,
}
gdp = pd.Series(gdp_dict)

country = pd.DataFrame({
    "population" : population,
    "gdp" : gdp
})

# loc 을 활용하여 'korea' 행의 데이터를 출력하세요.
print('=== Korea ===')
print(country.loc['korea'])
print('')
# loc 을 활용하여 'korea', 'japan', 'china' 행의 데이터를 출력하세요.
print('=== Korea, Japan, China ===')
print(country.loc['korea':'china']) # korea ~ china
print('')
# iloc 을 활용하여 'korea', 'japan', 'china' 행의 데이터를 출력하세요.
print('=== Korea, Japan, China ===')
print(country.iloc[ 0 : 3 ]) # 0-th ~ 2-nd -> [0:3]
print('')
# iloc 을 활용하여 모든 나라의 'gdp' 열의 데이터를 출력하세요. 
print('=== GDP ===')
print(country.iloc[:, 1 ]) # population는 0-th 열, gdp는 1-st 열
print('')
# 컬럼명을 활용하여 모든 나라의 'population' 데이터를 출력하세요. 
print('=== population ===')
print(country['population'])
print('')

 

 

Matplotlib로는 그래프를 만들 수 있다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


x = np.arange(10)
fig, ax = plt.subplots()
ax.plot(
    x, x, label='y=x',
    linestyle='-', 
    marker='.', 
    color='blue'
)
ax.plot(
    x, x**2, label='y=x^2',
    linestyle='-.', 
    marker=',', 
    color='red'
)
ax.set_xlabel("x")
ax.set_ylabel("y")


fig.savefig("plot.png")

 

plot.png

Line Style

기호 의미
- 실선 
대시 선
-. 대시 점선 
: 점선

Markers

기호 의미 기호 의미
. , 픽셀
o s 사각형
v, <, ^, > 삼각형 1, 2, 3, 4 삼각선
p 오각형 H, h 육각형

 

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


x = np.arange(10)
fig, ax = plt.subplots()
ax.plot(x, x, linestyle="-", marker =".")
ax.plot(x, x+2, linestyle="--", marker ="*")
ax.plot(x, x+4, linestyle="-.", marker ="o")
ax.plot(x, x+6, linestyle=":", marker ="s")


fig.savefig("plot.png")

삼각함수도 만들 수 있다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x))
ax.set_xlim(-2, 12)
ax.set_ylim(-1.5, 1.5)



fig.savefig("plot.png")

 

함수에 대해 설명하는 박스도 만들 수 있다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


x = np.arange(10)
fig, ax = plt.subplots()
ax.plot(
    x, x, label='y=x',
    linestyle='-',
    marker='.',
    color='blue'
)
ax.plot(
    x, x**2, label='y=x^2',
    linestyle='-.',
    marker=',',
    color='red'
)
ax.set_xlabel("x")
ax.set_ylabel("y")


ax.legend(
    loc='center left', 
    shadow=True,
    fancybox=True,
    borderpad=2
)

fig.savefig("plot.png")

 

 

막대그래프나 히스토그램도 제작할 수 있다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
fname='./NanumBarunGothic.ttf'
font = fm.FontProperties(fname = fname).get_name()
plt.rcParams["font.family"] = font

# Data set
x = np.array(["축구", "야구", "농구", "배드민턴", "탁구"])
y = np.array([13, 10, 17, 8, 7]) # [13, 10, 17, 8, 7] 로 변경해보세요.
z = np.random.randn(1000)

fig, axes = plt.subplots(1, 2, figsize=(8, 4))

# Bar 그래프
axes[0].bar(x, y)
# 히스토그램
axes[1].hist(z, bins = 200) # bins를 200으로 변경해보세요.


# elice에서 그래프 확인하기
fig.savefig("plot.png")

 

 

참고로 엘리스 코딩에서 무료로 해주는 AI 데이터 분석 수업에서 대부분 자료를 가지고 왔다.

728x90