일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 한줄for문
- 데이터시각화
- map
- 반복문
- ★
- 프로그래머스
- 선형회귀
- f-string
- SQLD
- Max
- AB테스트
- 태블로
- 시각화
- Til
- Join
- 아티클스터디
- 리스트
- SQL
- 다중공선성
- 이중for문
- 통계학
- 내일배움일지
- 가설검정
- Leetcode
- DATE_SUB
- python
- 내일배움캠프
- Set
- 내배캠_학습기록
- 데이터전처리
- Today
- Total
노력에는 지름길이 없으니까요
데이터전처리, 시각화 - 2) Pandas 기초 본문
Pandas를 활용하면
- 대용량 데이터 처리가 가능 : Pandas는 데이터를 메모리에 로드하고, 다양한 연산을 빠른 처리가 가능하며 대용량 데이터를 처리하는데 최적화되어 있습니다.
- 데이터 조작 기능 : 데이터 정렬, 필터링, 집계, 결측값 처리 등 데이터를 쉽게 가공할 수 있음
- 데이터 시각화 기능 제공 : Matplotlib, Seaborn , … , etc
- 데이터를 구조화하여 분석할 수 있음 : DataFrame이라는 자료형을 제공하여 데이터를 표 형태로 나타내어 분석이 가능함
시리즈와 데이터프레임의 차이
데이터프레임에 있는 하나의 컬럼이 시리즈라고 생각하면 됨!
데이터프레임음 컬럼이 두 개 이상인 표.
데이터 불러오기, 저장하기
인덱스 : 데이터프레임(DataFrame) 또는 시리즈(Series)의 각 행 또는 각 요소에 대한 식별자
인덱스 활용하기 (set_index)
→ 특정 컬럼에 들어있는 값을 인덱스로 활용하기
# df가 가지고 있는 특정 컬럼명을 기준으로 인덱스를 설정하기
data = df.set_index('컬럼명')
data.head()
reset_index() 를 활용해서 현재 인덱스를 0부터 시작하는 정수로 변경할 수 있습니다.
컬럼
pd.read_csv('./data/file.csv' , names = [’컬럼명1’, ‘컬럼명2’, … ,‘컬럼명 19’])
#컬럼 확인하기
data.column
데이터 확인
.head()
데이터를 N개 행까지 보여줍니다.
data.head() # head()은 기본 5개 행에 대한 데이터를 보여줌
data.head(3) # ()안에 숫자만큼 데이터를 보여줌
.Info()
데이터의 정보를 파악합니다. (인덱스, 컬럼명, 컬럼의 데이터 개수, 데이터 타입)
data.info()
# null 값을 확인할때도 활용
.describe()
- 데이터의 기초통계량을 확인합니다. (개수, 평균, 표준편차, 사분위, 중앙값)
data.describe()
# 숫자값에 대해서만 기초통계량 확인이 가능합니다.
데이터를 불러온 다음에 반드시 체크해야 할 것
1. 데이터의 결측치(null)가 있는지
# 결측치 확인 : isnull()
df.isnull().sum() # 이렇게하면 결측치가 몇개있는지도 알 수 있어요 !
# 결측치 제거 : dropna()
df.dropna()
2. 중복 데이터는 없는지
# 중복 데이터 확인
df.duplicated(subset=['컬럼1', '컬럼2', '컬럼3'])
# 중복 데이터 제거
df.drop_duplicates(subset=['컬럼1', '컬럼2', '컬럼3'])
3. 이상치는 없는지
# IQR (Interquartile Range) 방법 찾아보기
# 참고 : https://www.scribbr.com/statistics/interquartile-range/
# IQR 계산
Q1 = df['컬럼1'].quantile(0.25)
Q3 = df['컬럼1'].quantile(0.75)
IQR = Q3 - Q1
# 이상치 기준 설정
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# 이상치 제거
df[(df['컬럼1'] >= lower_bound) & (df['컬럼1'] <= upper_bound)]
4. 데이터 타입이 알맞게 들어가있는지
# 데이터 타입 변경을 원한다면 !
df['column_name'].astype(int)
df['column_name'].astype(float)
df['column_name'].astype(str)
df['column_name'].astype(bool)
df['column_name'].astype('category')
df['column_name'].astype('datetime64[ns]')
df['column_name'].astype(complex)
df['column_name'].astype(object)
astype() 는 Pandas 데이터프레임의 열의 데이터 타입을 변경하는 데 사용됩니다. 이를 사용하여 열의 데이터 타입을 원하는 형식으로 변환할 수 있습니다.
iloc, loc
iloc는 인덱스 값을 사용하여 데이터를 부분적으로 출력
# 샘플 데이터프레임 생성
data = {
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data)
# iloc을 사용하여 특정 행과 열 선택
selected_data = df.iloc[1:4, 0:2] # 인덱스 1부터 3까지의 행과 0부터 1까지의 열 선택
print(selected_data)
loc는 컬럼명을 사용하여 데이터를 부분적으로 출력
# 샘플 데이터프레임 생성
data = {
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])
# loc을 사용하여 특정 행과 열 선택
selected_data = df.loc['b':'d', 'A':'B'] # 레이블 'b'부터 'd'까지의 행과 'A'부터 'B'까지의 열 선택
print(selected_data)
iloc와 loc에서 주의할 점
iloc에서 1~3 행을 출력하기 위해df.iloc[1:4]를 써준 반면,
loc는 지정한 행까지의 모든 데이터를 출력함 (df.loc['b':'d'])
'd'이전까지의 데이터가 출력되거나 하지 않는다는 뜻!
미묘하게 다르니 기억해두자
컬럼, 레코드 선택법
원하는 컬럼의 데이터를 출력
df[['A','B']] #복수 출력 원할 시에 리스트로 묶어서 불러야 에러 안남
df[['B','A']] #순서 원하는대로 가능
불리언 인덱싱
조건을 & 로 연결
#df[조건] -> 조건이 참인 데이터를 출력
df[(df['sex']=='Male') & (df['smoker']=='Yes')].head()
조건을 | 로 연결
#or 조건
df[(df['sex']=='Male') | (df['smoker']=='Yes')].head()
조건, 칼럼 선택
df.loc[df['size']>3, 'tip':'smoker'].head()
isin [리스트]
#isin([찾는 값들!!])
df[df['size'].isin([1,2])]
칼럼 size의 값이 1,2에 속해 있다면 출력한다.
코드 클렌징
조건을 변수에 넣어두고 그 변수를 사용한다.
코드가 길어질 때 더 깔끔하게 정리할 수 있는 방법!
#조건을 변수에 넣어서 계산할 시 조금 더 간편하게 출력할 수 있음
condition = df['tip'] <2
df[condition].head()
'내일배움캠프 일지' 카테고리의 다른 글
18일차 (24-07-18) TIL 학습기록 (0) | 2024.07.18 |
---|---|
17일차 (24-07-17) TIL 학습기록 (0) | 2024.07.17 |
데이터전처리, 시각화 - 1) 데이터 분석가란? (0) | 2024.07.17 |
16일차 (24-07-16) TIL 학습기록 (0) | 2024.07.16 |
15일차 (24-07-15) TIL 학습기록 (1) | 2024.07.15 |