Pandas - 2

BANG·2021년 3월 4일
0

Pandas

목록 보기
2/2

DataFrame 과 list, dict, ndarray 상호 변환

  • 1차원 list와 ndarray → DataFrame 변환
import numpy as np

col_name1=['col1']    # 컬럼명
list1 = [1, 2, 3]    # 1차원 리스트
array1 = np.array(list1)    # 1차원 ndarray

print('array1 shape:', array1.shape )

df_list1 = pd.DataFrame(list1, columns=col_name1)
print('1차원 리스트로 만든 DataFrame:\n', df_list1)

df_array1 = pd.DataFrame(array1, columns=col_name1)
print('1차원 ndarray로 만든 DataFrame:\n', df_array1)
  • 2차원 list와 ndarray → DataFrame 변환
# 3개의 컬럼명이 필요 (3열 이므로)
col_name2=['col1', 'col2', 'col3']

# 2행x3열 형태의 리스트 생성
list2 = [[1, 2, 3],
         [11, 12, 13]]

array2 = np.array(list2)    # 2행x3열 형태의 ndarray 생성
print('array2 shape:', array2.shape )

df_list2 = pd.DataFrame(list2, columns=col_name2)
print('2차원 리스트로 만든 DataFrame:\n', df_list2)

df_array1 = pd.DataFrame(array2, columns=col_name2)
print('2차원 ndarray로 만든 DataFrame:\n', df_array1)
  • dict → DataFrame 변환
# Key는 컬럼명으로 매핑
# Value는 리스트 형(또는 ndarray)
dict = {'col1':[1, 11], 'col2':[2, 22], 'col3':[3, 33]}
df_dict = pd.DataFrame(dict)
print('딕셔너리로 만든 DataFrame:\n', df_dict)

DataFrame.values

  • DataFrame → ndarray 변환
# DataFrame을 ndarray로 변환
array3 = df_dict.values
print('df_dict.values 타입:', type(array3))
print('df_dict.values shape:', array3.shape)
print(array3)

DataFrame.tolist()

DataFrame.to_dict()

  • DataFrame → list, dict 변환
# DataFrame을 리스트로 변환
list3 = df_dict.values.tolist()
print('df_dict.values.tolist() 타입:', type(list3))
print(list3)

# DataFrame을 딕셔너리로 변환
dict3 = df_dict.to_dict('list')
print('\n df_dict.to_dict() 타입:', type(dict3))
print(dict3)

DataFrame의 컬럼 데이터 셋 Access

  • 새로운 컬럼을 생성하고 컬럼에 값을 할당하려면 DataFrame 내에 새로운 컬럼명을 입력하고 값을 할당

DataFrame 데이터 삭제

drop()

DataFrame.drop(labels, axis=0, inplace=False)

label : 기본적으로 안들어가 있음

axis : default로 axis = 0

inplace : default로 inplace = False

  • 로우(행)을 삭제할 경우 axis = 0, 컬럼(열)을 삭제할 경우 axis = 1
  • 원본 DataFrame을 유지하고 drop된 새로운 DataFrame을 반환하므로, 새 변수로 할당하려면 inplace = False
  • 원본 DataFrame에 drop 결과를 적용하려면 inplace = True
titanic_drop_df = titanic_df.drop('Age_0', axis=1 )    # default로 inplace = False
titanic_drop_df.head(3)
titanic_df.head(3)
# 여러개의 컬럼(열)을 한번에 삭제하려면 리스트 형태로 컬럼명 입력
drop_result = titanic_df.drop(['Age_0', 'Age_by_10', 'Family_No'], axis=1, inplace=True)
print(' inplace=True 로 drop 후 반환된 값:',drop_result)    # None
titanic_df.head(3)
titanic_df = pd.read_csv('titanic_train.csv')

print('#### before axis 0 drop ####')
print(titanic_df.head(6))

titanic_df.drop([0,1,2], axis=0, inplace=True)    # index가 0, 1, 2에 해당하는 행 삭제

print('#### after axis 0 drop ####')
print(titanic_df.head(3))    # reset_index() 하기 전까지는 기존 index를 유지

index

  • DataFrame 이나 Series 의 레코드를 고유하게 식별하는 객체
  • 1차원 데이터
  • Index 객체만 추출하려면 DataFrame.index 또는 Series.index 속성 사용
  • 연산에서 제외
  • 오직 식별용
  • reset_index() 메서드를 수행하면 새롭게 연속 숫자를 인덱스에 할당하며 기존 인덱스는 'index'란 컬럼명으로 추가됨
# 원본 파일 로딩 
titanic_df = pd.read_csv('titanic_train.csv')

# Index 객체 추출
indexes = titanic_df.index
print(indexes)

# Index 객체를 실제 값 ndarrray로 변환 
print('Index 객체 array값:\n',indexes.values)
print(type(indexes.values))
titanic_reset_df = titanic_df.reset_index(inplace=False)
titanic_reset_df1 = titanic_reset_df .rename(columns={'index':'old_index'})
titanic_reset_df1.head(3)
profile
Record Everything!!

0개의 댓글