빅데이터분석기사

[빅데이터분석기사] 넘파이(numpy) 판다스(pandas)

EveningPrimrose 2022. 6. 1. 00:02
반응형

1. numpy 배열 생성

# numpy 배열 기본
import numpy as np
v1 = np.array([1, 2, 3, 4])
print(v1)

[1 2 3 4]

# 연속되거나 일정한 규칙을 가진 숫자
v1 = np.arange(5)
print(v1)

# 연속되거나 일정한 규칙을 가진 숫자, 데이터 형태 지정
v2 = np.arange(1, 10, 2, dtype=int)
v3 = np.arange(3.5, 10.5, 2, dtype=float)
print(v2)
print(v3)

# 제곱값 생성
v4 = np.arange(1, 10, 2)**2
print(v4)

# 세제곱값 생성
v5 = np.arange(1, 10, 2)**3
print(v5)

[0 1 2 3 4]

[1 3 5 7 9]

[3.5 5.5 7.5 9.5]

[1 9 25 49 81]

[1 27 125 343 729]

# 행렬만들기
v1 = np.arange(12)
print(v1)
v2 = v1.reshape(2, 6)
print(v2)
v3 = v1.reshape(2, 6, order='F')
print(v3)

[0 1 2 3 4 5 6 7 8 9 10 11]

[[0 1 2 3 4 5]

 [6 7 8 9 10 11]]

[[0 2 4 6 8 10]

 [1 3 5 7 9 11]]

# 행렬계산
v1 = np.arange(1, 5).reshape(2, 2)
print(np.add(v1, v1)) # 덧셈
print(np.subtract(v1, v1)) # 뺄셈
print(np.multiply(v1, v1)) # 곱셈
print(np.dot(v1, v1)) # 행렬연산

[[2 4]

 [6 8]]

[[0 0]

 [0 0]]

[[1 4]

 [9 16]]

[[7 10]

 [15 22]]

# 다차원 행렬 만들기
v1 = np.arange(12)
print(v1)
v2 = v1.reshape(2, 3, 2, order='F')
print(v2)

[0 1 2 3 4 5 6 7 8 9 10 11]

[[[0 6]

  [2 8]

  [4 10]]

 [[1 7]

  [3 9]

  [5 11]]]

# 다차원 배열에서 요소의 최대값 및 최소값 변환
v3 = np.arange(3.5, 10.5, 2, dtype=float)
print(v3)
v4 = np.arange(1, 5).reshape(2, 2)
print(v4)
print(np.amax(v3))
print(np.amin(v4))
print(v3.dtype)
print(v4.shape)

[3.5 5.5 7.5 9.5]

[[1 2]

 [3 4]

9.5

1

float64

(2, 2)

 

2. pandas 함수 개요

# pandas 함수 불러오기
import pandas as pd
from pandas import Series, DataFrame

# series 설정
a = Series([1, 3, 5, 7])
print(a)
print(a.values)
print(a.index)

# index 변경
a2 = pd.Sereis([1, 3, 5, 7], index = ['a', 'b', 'c', 'd'])
print(a2)

0 1

1 3

2 5

3 7

dtype: int64

[1 3 5 7]

RangeIndex(start=0, stop=4, step=1)

a 1

b 3

c 5

d 7

dtype: int64

# index 변경
a2 = pd.Series([1, 3, 5, 7], index=['a', 'b', 'c', 'd'])
a2

a 1

b 3

c 5

d 7

dtype: int64

 

3. DataFrame과 데이터 파일 불러오기

# csv 파일을 pandas DataFrame 형태로 불러오기
df = pd.read_csv('EX_GrapeData.csv')
df

# 엑셀파일을 pandas DataFrame 형태로 불러오기
df = pd.read_excel('EX_GrapeData.xlsx')
df

 - 한글이 포함되어 있을 경우 인코딩 설정(encoding='euc-kr', 'cp949'', 'utf-8' 등 옵션 설정)

 - df = pd.read_csv('EX_GrapeData.csv', encoding='euc-kr')

 - df = pd.read_excel('EX_GrapeData.csv', encoding='euc-kr')

 

4. DataFrame 확인하기

# 데이터 프레임 처음부터 ~개의 행만 불러오기
df.head()

# 데이터 프레임 뒤부터 ~개의 행만 불러오기
df.tail()

# 1에서 4까지 출력
df[1:5]

# 처음부터 2까지 출력
df[:3]

# 60에서 끝까지 출력
df[60:]

# price 변수(열) 불러오기: series 형태
df['price'] # df.price 로 대체 가능

# price 변수(열) 불러오기: DataFrame 형태
df[['price']]

# 0번, 2번, 4번째 열(컬럼)만 출력
df.[df.column[[0, 2, 4]]]

# size부터 price까지 출력
df.loc[:, 'size':'price']

# 1~7행(케이스), 0~2열(변수)만 불러오기
df.iloc[1:7, 0:2]

5. 데이터 복사, 추가, 삭제

# 데이터 프레임 전체 복사(백업)
df_columns = df.copy()
# 데이터 프레임 전체 복사(백업)
df_columns.columns

Index(['continent', 'brand', 'size', 'period', 'price'], dtype='object')

# 데이터 프레임 열 필터링
df_columns = df_columns[['size', 'period', 'price']]
df_columns.head()

6. 변수이름 변경, 행추가 및 삭제

# 데이터 열(변수) 이름 수정: period -> time
df_columns.rename(columns={'period': 'time'}, inplace=True)
df_columns.columns

Index(['size', 'time', 'price'], dtype='object')

# size를 time으로 나누어 월별 포도크기로 계산하여 growth 변수 생성
df_columns['growth'] = df.columns['size']/df_columns['time']
df_columns.head()

# 특정 변수 삭제 : growth 살제
del df_columns['growth']

 

7. 데이터 케이스 추출

# 특정 케이스 선택1: 집단선택
df_continent_brand = df[(df['continent'] == 1) & (df['brand'] == 1)]
df_continent_brand.head()

# 특정 케이스 선택2: 기준값 이상 혹은 이하 선택
df_over_size_period=df[(df['size'] >= 10) & (df['period'] >= 30)]
df_over_size_period.head()

8.  코딩변경

df_columns.head()

# brand 범주 카운트
df['brnad'].value_counts()

방법 1) replace 사용

# brand 1, 2, 3 집단을 1, 2로 묶기 (1/2 -> 1, 3 ->2)
recode_brand = {"brand" : {1:1, 2:1, 3:2}}
df_recode1 = df.replace(recode_brand)
df_recode1.head()

df_recode1['brand'].value_counts()

방법2) 함수정의 사용

# 코딩변경 함수 정의
def brand_groups(series) :
 if series==1:
  return 1
 elif series==2:
  return 1
 elif series==3:
  return 2

df['re_brand'] = df['brand'].apply(brand(groups)
df.head()

9. pandas와 numpy 전환

# pandas 형태로 데이터 불러와서 확인
import pandas as pd
df = pd.read_csv('EX_GrapeData.csv')
df.head()

# pandas를 numpy로 변환
df_num = df.to_numpy()
# numpy를 pandas로 변환 (변수명 미지정)
df_pd = pd.DataFrmae(df_num)
# numpy를 pandas로 변환 (변수명 지정)
df_pd2 = pd.DataFrame(data = df_num, columns = ["continent", "brand", "size", "period", "price"])

 

10. csv 파일로 저장

# 데이터셋명, to_csv("새로운파일명.csv", index=True/False, encoding='utf-8'/'euc'kr', 'cp949')
df.to_csv('new_data.csv', index=False, encoding='utf-8'

 

반응형