Python/Pandas

[Pandas] DataFrame 인덱싱

공기반 코딩반 2023. 12. 29. 15:33
반응형

loc 사용

import pandas as pd

iphone_df = pd.read_csv('./data/iphone.csv', index_col=0)

print(iphone_df.loc['iPhone 8', '메모리']) # [row, column]

print(iphone_df.loc['iPhone 8', '가격'])   # 존재하지 않는 column 이면 오류

에러 출력

 

 

 

 

 

 

 

 

Column 정보 접근

print(iphone_df.loc['iPhone X', :]) # 모든 column 정보 출력
print()

print(iphone_df.loc['iPhone X']) # 모든 column 정보 출력
print(type(iphone_df.loc['iPhone X'])) #  시리즈 데이터  pandas 1차원 데이터

 

- type : Series

- 특정 row에 대한 column 정보들을 가져옴 

 

 

 

 

 

 

여러 Column에 대한 인덱싱

df[[column1, column2]]

 

print(iphone_df[['출시일', 'Face ID']]) # 출시일 모든 row 정보 출력
print(type(iphone_df[['출시일', 'Face ID']])) # 타입

 

- type : Series아닌 DataFrame(2차원이기 때문)

 

 

 

 

Row 정보 접근

print(iphone_df.loc[:, '출시일']) # 출시일 모든 row 정보 출력
print()
print(iphone_df['출시일']) # 출시일 모든 row 정보 출력

 

 

 

 

 

사용법

- loc 사용 : df.loc[행, 열] 정보 

df.loc[row, column]

 

 

- 특정 df[column] 입력

 

 

 

 

 

 

여러 row에 대한 인덱싱

print(iphone_df.loc[['iPhone X', 'iPhone 8']])

 

 

 

 - type : Serires아닌 DataFrame(2차원 이기때문)

print(type(iphone_df.loc[['iPhone X', 'iPhone 8']])) # 출시일 모든 row 정보 출력

 

 

 


특정 row slicing

print(iphone_df.loc['iPhone 8':'iPhone XS'], end='\n\n') # 특정 row slicing

 

 

 

 

특정 column slicing

print(iphone_df['메모리':'Face ID'], end='\n\n') # 안 뜸

 

 

- 올바른 방법

print(iphone_df.loc[:, '메모리':'Face ID']) # column slicing

 

 

 

 

 

특정  row, column slicing

print(iphone_df.loc['iPhone 7' : 'iPhone X', '메모리':'Face ID']) # 특정 row, 특정 column  slicing

 

 

 

- iPhone 7 ~ iPhone X 의 메모리, 출시버전,  Face ID 여부를 슬라이싱 해서 출력

 

 

 


 

Boolean으로 데이터 인덱싱

print(iphone_df.loc[[True, False, True, True, False, True, False ]]) #  True인 열만 출력
# print(iphone_df.loc[[True, False, True, True]]) # 길이 짧으면 나머지는 False, 행 갯수 만큼 불리언 갯수도 맞아야함 
# print(iphone_df.loc[:, [True, False, True, True]]) # 길이 짧으면 나머지는 False, 행 갯수 만큼 불리언 갯수도 맞아야함

 

 

 

 

 

 

 

조건 인덱싱

print(iphone_df['디스플레이']>5)

 

-Pandas Series를 반환

 

 

- 부등호 조건

print(iphone_df.loc[iphone_df['디스플레이']>5])

 

 

 

 

import pandas as pd

df = pd.read_csv('data/broadcast.csv', index_col=0)
df['KBS'].loc[df['KBS']> 30]

 

 

 

import pandas as pd

df = pd.read_csv('data/broadcast.csv', index_col=0)
# 여기에 코드를 작성하세요
condition = df['SBS'] < df['TV CHOSUN']
df[['SBS', 'TV CHOSUN']].loc[condition]

 

 

 

 

 

- 등호 조건

print(iphone_df['Face ID'] == 'Yes')

 

 

 

- & 조건

 

print(iphone_df.loc[(iphone_df['Face ID'] == 'Yes') & (iphone_df['디스플레이']>5)])

 

- 조건들을 괄호를 사용해 묶는 것 필요

 

 

 

 


 

 

DataFrame 합치는 방법

1) 딕셔너리 → DataFrame화

combined_df = pd.DataFrame({
    'day': samsong_df['요일'], 
    'samsong': samsong_df['문화생활비'], 
    'hyundee': hyundee_df['문화생활비']
})

combined_df

 

 

2) loc 사용

samsong_data = samsong_df.loc[1:, 3]
hyundee_data = hyundee_df.loc[1:, 3]
# print(samsong_data)

combined_df = pd.concat([samsong_df.loc[:, :0], samsong_data, hyundee_data], axis=1)
# # df = pd.DataFrame(df, columns=['day', 'samsong', 'hyundee'])
combined_df.columns=['day', 'samsong', 'hyundee']
combined_df = combined_df.drop(0, axis=0)
combined_df.index = [0,1,2,3,4,5,6]
combined_df

 

 

 

 

 


 

 

 

 

 

반응형

'Python > Pandas' 카테고리의 다른 글

[Pandas] DataFrame 값 쓰기  (0) 2023.12.31
[Pandas] 숫자 인덱싱  (0) 2023.12.30
[Pandas] csv 데이터 불러오기  (2) 2023.12.27
[Pandas] DataFrame이란?  (0) 2023.12.26
[Pandas] Pandas vs R  (0) 2023.12.25