빅데이터분석👨‍💻/Study

빅데이터 분석 기초 - 인덱싱 (Indexing)

xoghks_h 2023. 11. 27. 16:01

 

 

[Python] 빅데이터 분석 기초 - 필터링 (Filtering)

[Python] 빅데이터 분석 기초 - 인덱싱 (Indexing) 방대한 양의 데이터를 분석할 때 필요한 데이터만 추출하기 위해선 별도의 인덱싱이 필요하다. 필수적인 과정은 아니지만 데이터 시각화를 진행할

xl-shine.tistory.com

 

[Python] 빅데이터 분석 기초 - 집계 (Aggregation)

[Python] 빅데이터 분석 기초 - 인덱싱 (Indexing) 방대한 양의 데이터를 분석할 때 필요한 데이터만 추출하기 위해선 별도의 인덱싱이 필요하다. 필수적인 과정은 아니지만 데이터 시각화를 진행할

xl-shine.tistory.com

 

 방대한 양의 데이터를 분석할 때 필요한 데이터만 추출하기 위해선 별도의 인덱싱이 필요하다. 필수적인 과정은 아니지만 데이터 시각화를 진행할 때 특정 컬럼들을 대상으로 시각화를 진행하는 경우가 빈번하기 때문에 알아둬야할 과정이다.

df = pd.read_csv('data/02_seoul_accident_clean.csv')
df.info()

 사용한 자료는 공공데이터 포털에서 교통사고 관련 데이터를 취합한 자료를 사용하였으며, 이윤 추구의 목적이 있는 데이터가 아님을 밝힌다.

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 74485 entries, 0 to 74484
Data columns (total 29 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   사고번호       74485 non-null  object 
 1   사고년도       74485 non-null  int64  
 2   사고월        74485 non-null  int64  
 3   사고일        74485 non-null  int64  
 4   사고시각       74485 non-null  int64  
 5   사고요일       74485 non-null  int64  
 6   시군구_대범주    74485 non-null  object 
 7   시군구_소범주    74485 non-null  object 
 8   사고내용       74485 non-null  object 
 9   사망자수       74485 non-null  int64  
 10  중상자수       74485 non-null  int64  
 11  경상자수       74485 non-null  int64  
 12  부상신고자수     74485 non-null  int64  
 13  사고유형_대범주   74485 non-null  object 
 14  사고유형_소범주   74485 non-null  object 
 15  법규위반       74485 non-null  object 
 16  노면상태_대범주   74485 non-null  object 
 17  노면상태_소범주   74485 non-null  object 
 18  기상상태       73575 non-null  object 
 19  도로형태_대범주   74485 non-null  object 
...
 27  피해운전자연령    72049 non-null  float64
 28  피해운전자상해정도  72225 non-null  object 
dtypes: float64(2), int64(9), object(18)
memory usage: 16.5+ MB
Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...

 

리스트를 사용한 열 선택

 

조회하고자 하는 컬럼의 개수가 적을 때, 타겟 컬럼 명을 하드코딩해 목표 데이터를 직관적으로 볼 수 있다.

col = ['사고유형_대범주','사고유형_소범주']
df[col]
	사고유형_대범주	사고유형_소범주
0	         차대사람  차대사람 - 횡단중
1       차대차 차대차 - 추돌
2       차대차 차대차 - 기타
3       차대차 차대차 - 측면충돌
4    차대사람 차대사람 - 횡단중
...	...	...
74480	차대차 차대차 - 기타
74481	차대차 차대차 - 정면충돌
74482	차대차 차대차 - 추돌
74483	차대차 차대차 - 측면충돌
74484	차대차 차대차 - 측면충돌
74485 rows × 2 columns

 

iloc를 사용한 열 선택

 

정수로 행과 열을 선택해 인덱스 슬라이싱이 가능하다.

# 처음부터 두번째 행까지
df.iloc[:3]

# 처음부터 두번째 행까지, 2,8,9번째 열만
df.iloc[:3, [2,8,9]]

# 24번째열부터 끝까지. 모든 행.
df.iloc[:, 24:]

# 처음부터 두개씩 건너띄면서 10번째 행까지. 처음부터 2개열
df.iloc[:10:2, :2]

 

 

loc를 사용한 열 선택

 

Label로 행과 열을 선택해 인덱스 슬라이싱이 가능하다. iloc와 loc의 차이점이라면 iloc는 오로지 정수 값으로만 인덱스를 지정해서 슬라이싱이 가능하지만, loc는 특정 컬럼명으로 인덱스 지정이 가능하고 조건절까지도 사용할 수 있다.

# 0번, 2번 인덱스 선택, 모든 컬럼 선택
row = [0,2]
df.loc[row]

# 모든 인덱스 선택, 기상상태, 법규위반 컬럼 선택
col = ['기상상태','법규위반']
df.loc[:, col]

# 3번 인덱스까지 선택, 컬럼은 col로 선택
df.loc[:3, col]