반응형
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 |