1차원 테이블 / 2차원 테이블

2022. 10. 9. 12:36Dev.Program/Python & R

728x90

======== test2.py

# pandas 설치 : R을 보고 만든 파이썬 패키지

#             : Numpy 기반으로 만들어짐, 복잡한 데이터 분석

# dataframe 기반 => 엑셀 table, 2차원 배열(리스트) 행, 열에 접근

# 파일 웹, sns,  csv(=txt), xml, xls, json, ... 데이터 수집

# 정제 : 이상한 데이터 1 ~ 100 999 -> 처리

#        비어있는 데이터 -> 처리

# 요약 정리 표 -> 시각화(그래프)(->많은 데이터 중에서 원하는 부분만 뽑아서 표를 만듬)

# https://pandas.pydata.org/

 

  • pandas 설치

< 1차원 테이블 형태 >

import pandas as pd

# Series 1차원 테이블
s1 = pd.Series([10, 20, 30, 40, 50])
print(s1)
  • 인덱스 번호(0~4)도 같이 생성됨! ⇒ 테이블 형태(엑셀형태)의 데이터로 만들어줌
# index 번호 values 값
print(s1.index)
print(s1.values)
s2 = pd.Series(['a', 'b', 'c', 1, 2, 3])
print(s2)
import numpy as np

s3 = pd.Series([np.nan, 10, 30]) # np.nan 비어있는 값
print(s3)
  • 비어있는 값!
s3 = pd.Series([np.nan, 10, 30]) # np.nan 비어있는 값
print(s3)

index_data = ['2020-05-22', '2020-05-23', '2020-05-24']
s4 = pd.Series([100, np.nan, 205], index = index_data)
print(s4)
  • 0, 1, 2 인덱스 대신에 설정한 인덱스 값으로 변경 가능
# 딕셔너리 형태 : 열 이름이 인덱스 이름
s5 = pd.Series({'국어':100, '영어':95, '수학':90})
print(s5)
# 날짜 자동 생성
s6 = pd.date_range(start='2019-01-01', end='2019-01-07', periods=None, freq='D')
print(s6)
s7 = pd.date_range(start='2019-01-01', periods=4, freq='D')
print(s7)

 

< 2차원 테이블 >

# DataFrame 2차원 테이블
df1 = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]])
print(df1)
  • 3행 3열로 나옴
index_date = pd.date_range(start='2020-06-01', periods=3)
columns_list = ['A', 'B', 'C']
df1 = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], index=index_data, columns=columns_list)
print(df1)
  • 행 열(인덱스/칼럼) 이름 수정가능!
table_data = {'연도':[2015, 2016, 2017],
             '지사':['한국', '미국', '한국'],
             '고객수':[200,450,300]}
df2 = pd.DataFrame(table_data, index=[1, 2, 3])
print(df2)
print(df2.index)
print(df2.columns)
print(df2.values)
print(df2.sum()) # 세로(열)로 더해줌
print(df2.sum(axis=1)) # 가로(행)로 더해줌
print(df2.std()) # 표준편차
print(df2.std(axis=1)) # 표준편차
print(df2.describe())

 

season_data = {'봄':[256.5, 264.3, 215.9, 223.2, 312.8],
              '여름':[356.5, 364.3, 315.9, 323.2, 312.8],
              '가을':[256.5, 264.3, 215.9, 223.2, 312.8],
              '겨울':[156.5, 164.3, 115.9, 123.2, 112.8]}
df3 = pd.DataFrame(season_data, index=[2012, 2013, 2014, 2015, 2016])
print(df3)
# 상위 5개 기본 => 3개
print(df3.head(3))
# 하위 5개 기본 => 3개
print(df3.tail(3))
# 1행 ~ 2행 앞까지 추출
print(df3[1:2])
  • 행이 0부터 시작하기 때문에 2012년이 아닌 2013년부터 시작!
# 2012 년도
print(df3.loc[2012])
# 2012 ~ 2014
print(df3.loc[2012:2014])
# 봄
print(df3['봄'])

 

# 겨울 강수량 120보다 작은 경우
print(df3['겨울'])
print(df3['겨울']<=120)
print(df3['겨울'][df3['겨울']<=120])

 

# 행, 열
print(df3.iloc[0,0])
print(df3.iloc[0,1])
# 전치행렬 (역으로 행과 열을 바꿈)
print(df3.T)



# 열 추가
df3['sum_0']=0
print(df3)



# 봄 여름 가을 겨울의 합계 => sum_1 열추가
df3['sum_1'] = df3['봄'] + df3['여름'] + df3['가을'] + df3['겨울']
print(df3)
# avg_1 열추가 봄여름가을겨울 평균값
df3['avg_1'] = (df3['봄'] + df3['여름'] + df3['가을'] + df3['겨울'])/4
print(df3)

 

# 열 삭제
df3_1 = df3.drop('sum_0', axis=1)
print(df3_1)
  • df3 을 출력하면 sum_0 도 같이 나옴! 따로 df3_1 에 담아서 출력해야함

 

< 파일 외부로 뽑아내기 >

  • 여러 확장자(형식)들 있음!
df1.to_csv('df1.csv')
  • 실행시키면
  • 파일 만들어짐!

 

> 경로 설정도 가능!

df1.to_csv('D:\workspace_py\py1\df1_1.csv')

 

> 인덱스 이름 설정도 가능!

df1.index.name = 'date'
print(df1)

 

< 외부 파일 가져오기 >

  • read 적으면 많은 확장자들 보임!
# 외부파일 -> 데이터 프레임
fdf1 = pd.read_csv('height.csv')
print(fdf1)
  • 같은 폴더 내에 있어서 경로지정 따로 줄 필요 없음
# nation -> index 가져오기
fdf1_2 = pd.read_csv('height.csv', index_col='nation')
print(fdf1_2)

 

# math.csv
fdf2 = pd.read_csv('math.csv')
print(fdf2)
fdf2_2 = pd.read_csv('math.csv', index_col='year')
print(fdf2_2)


728x90

'Dev.Program > Python & R' 카테고리의 다른 글

여러가지 그래프  (0) 2022.10.09
여러가지 메서드  (0) 2022.10.09
함수 Import 방법 / 외장함수  (0) 2022.10.09
다중 상속 / 함수 / 예외처리 / 파일 읽고 쓰기  (0) 2022.10.09
클래스  (0) 2022.10.09