본문 바로가기

Python_Intermediate/Pandas

[Pandas]Python Study - PPT Presentation Material - DataFrame

데이터가 크다?

-행이 많다는 의미

-> 100명의 데이터가 10만명의 데이터가 될 경우 처리시 하드웨어 사양을 높이거나 하둡(분산처리) 구축

   행이 늘어나더라도 분석 기술 측면에서 별다른 차이가 없다.

 데이터가 크다?

-열이 많다는 의미

-> 데이터 분석은 변수들 간의 관계를 다룸(학점 - 연봉의 관계 / 전공 연봉의 관계)

   변수를 조합할 수 있는 경우의 수가 증가 의미

   단순한 분석 방법으로는 해결이 힘들다.

   여러 변수의 영향을 동시에 고려할 수 있는 복잡한 분석 방법을 활용

# 성적 리스트
# Sample Data List
# 2차원 성적 리스트
grade_list = [  # 국 영 수 과
    [98, None, 68, 64],             # 노진구
    [88, 90, 60, 20],               # 퉁퉁이
    [90, 70, None, None],           # 비실이
    [62, 70, 18, 60],               # 이슬이
    [120, 50, None, 60]             # 도라에몽
]

# 딕셔너리 성적 리스트
grade_dic = {
    '국어': [98, 88, 68, 64, 120],
    '영어': [None, 90, 60, 20, 50],
    '수학': [90, 70, None, 31, None],
    '과학': [120, 50, None, 60, 88]
}

from pandas import DataFrame
from Data import grade_list
from Data import grade_dic

# List -> DataFrame
# None(값이 없음) -> NaN
# Missing
df = DataFrame(grade_list)
print(df)

from pandas import DataFrame
from Data import grade_list
from Data import grade_dic

# 각각의 데이터 열의 값과 타입 조회
# 각 열의 자료형 -> Series(DataFrame = Series의 모음)
df = DataFrame(grade_list)
print(df[0])
print(type(df[0]))
print('-' * 30)
print(df[1])
print(type(df[1]))

from pandas import DataFrame
from Data import grade_list
from Data import grade_dic

# 컬럼(열) 이름을 지정하여 새로 생성
# 컬럼의 이름을 갖고 있는 리스트를 지정
columns_name = ['국어', '영어', '수학', '과학']
df = DataFrame(grade_list, columns=columns_name)
print(df)

from pandas import DataFrame
from Data import grade_list
from Data import grade_dic

# 각각의 데이터 열의 값 조회
# 컬럼 이름이 지정되면 번호로 접근할 수 없다.
columns_name = ['국어', '영어', '수학', '과학']
df = DataFrame(grade_list, columns=columns_name)

print(df['국어'])
print('-' * 30)
print(df['영어'])

from pandas import DataFrame
from Data import grade_list
from Data import grade_dic

# 인덱스(행) 이름을 지정하여 생성
# 인덱스의 이름을 갖고 있는 리스트를 지정
index_names = ['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽']
df = DataFrame(grade_list, index=index_names)
print(df)

from pandas import DataFrame
from Data import grade_list
from Data import grade_dic

# 인덱스와 컬럼이름 모두 지정
columns_name = ['국어', '영어', '수학', '과학']
index_name = ['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽']
df = DataFrame(grade_list, index=index_name, columns=columns_name)
print(df)

from pandas import DataFrame
from Data import grade_list
from Data import grade_dic

# 딕셔너리를 통한 데이터 프레임 생성
# 딕셔너리의 key = DataFarme의 컬럼(열)
df = DataFrame(grade_dic)
print(df)

from pandas import DataFrame
from Data import grade_list
from Data import grade_dic

# 인덱스 이름을 지정한 데이터 프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])
print(df)

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 열을 기준으로 데이터 타입 확인
print(df.dtypes)

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 열을 기준으로 데이터 값 확인
print(df['국어'])

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 열의 값 numpy 배열로 추출
array = df['국어'].values
print(type(array))
print(array)

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 열의 값 list로 추출
columns_list = list(df['국어'])
print(type(columns_list))
print(columns_list)

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 하나의 행에 속한 모든 데이터 추출
column = df.loc['노진구']
print(column)

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# Series Return
# DataFrame은 Series의 모음
column = df.loc['노진구']
print(type(column))

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 행의 값들을 numpy 배열로 추출
column = df.loc['노진구']
array = column.values
print(type(array))
print(array)

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 행의 값들을 numpy 배열로 추출
column = df.loc['노진구']
column_list = list(column)
print(type(column_list))
print(column_list)

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 열 -> 행 순으로 접근
print('노진구의 국어 점수는 %d 점 입니다.' % df['국어']['노진구'])

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 열 -> 행 순으로 접근
print('비실이의 국어 점수는 %d 점 입니다.' % df.loc['비실이', '국어'])

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 특정 값 변경
# 행 우선 접근 방법으로만 가능
df.loc['이슬이', '수학'] = 99
print('이슬이의 변경된 수학 점수는 %d 점' % df.loc['이슬이', '수학'])

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# DataFrame에서 Index(행) 이름만 추출
print(df.index)             # 객체 형식
print(list(df.index))       # 리스트 변환

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# DataFrame에서 Column(열) 이름만 추출
print(df.columns)               # 객체 형식
print(list(df.columns))         # 리스트 변환

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 2차원 배열(numpy 객체)로 추출
print(type(df.values))
print(df.values)

from pandas import DataFrame
from Data import grade_dic

# 데이터프레임 생성
df = DataFrame(grade_dic, index=['노진구', '이슬이', '비실이', '퉁퉁이', '도라에몽'])

# 전치(열과 컬럼이 바뀐 형태) 구하기
df_t = df.T
print(df_t)