반응형
- https://www.datamanim.com/dataset/99_pandas/pandasMain.html 를 참고하였습니다. 감사합니다.
- 익숙한 줄 알았던 Pandas를 다시 해보니 가물가물합니다. 꾸준한 노력, 연습만이 합격!을 가져올 것입니다!!
데이터 불러오고 파악하기
- '\t'를 기준으로 구분되어 있는 데이터를 로드하기
- sep = '\t' 쓰는 것 잊지 마세요!!!
- 구분자(separator)가 있을 경우에 사용하는 옵션입니다.
import pandas as pd
df = pd.read_csv('경로/데이터.csv', sep = '\t')
- 컬럼이 한글일 경우 encoding 옵션을 넣어줍니다.
- encoding = 'euc-kr'
url = 'https://raw.githubusercontent.com/Datamanim/pandas/main/Jeju.csv'
df = pd.read_csv(url, encoding = 'euc-kr')
- 데이터의 인덱스 구성 확인하기
df.index
- 행 수, 열 수 파악하기
print(df.shape)
print('행: ', df.shape[0])
print('열: ', df.shape[1])
- 6번째 컬럼의 데이터 타입을 확인하기
df.iloc(:, 5).dtype
- 수치형 변수를 가진 컬럼 출력하기
- select_dtypes()
df.select_dtypes(exclude=object).columns
- 범주형 변수를 가진 컬럼 출력하기
df.select_dtypes(include = object).columns
- 평균 속도 컬럼의 4분위 수 범위(IQR)
- IQR = Q3 - Q1
df['평균 속도'].quantile(0.75) - df['평균 속도'].quantile(0.25)
FILTERING & SORTING
- quantity 컬럼 값이 3인 데이터를 추출하여 마지막 5행 출력하기
df.loc[df['quantity'] == 3].tail()
- quantity 컬럼 값이 3인 데이터를 추출하여 index를 0부터 정렬하고 첫 5행 출력하기
- reset_index(drop=True)
- 여기서 drop=True를 하지 않으면 'index'컬럼이 생성됩니다.
df.loc[df['quantity'] == 3].head().reset_index(drop=True)
- item_price 컬럼의 달러 표시 문자를 제거하고(value의 맨 앞에 모두 써 있음), float 타입으로 저장하여 new_price 컬럼에 저장하기
df_1['new_price'] = df_1['item_price'].str[1:].astype('float')
- new_price 컬럼이 5 이하의 값을 가지는 데이터프레임을 추출하고 전체 갯수 구하기
len(df_1.loc[df_1.new_price <= 5])
- df의 new_price 컬럼 값에 따라 내림차순으로 정리하고 index 초기화하기
- sort_values('컬럼명')
- 옵션으로 ascending이 있는데 디폴트값은 오름차순입니다. ascending=False로 하면 내림차순으로 정렬됩니다.
df.sort_values('new_price', ascending=False).reset_index(drop=True)
- df의 item_name 컬럼 값 중 Chips를 포함하는 경우의 데이터 출력하기
- str.contains('단어')
df.loc[df.item_name.str.contain('Chips')]
- df의 짝수번째 컬럼만 추출하기
- ::2는 두 번째 열마다 선택하도록 지정하는 것입니다.
df.iloc[:, ::2]
- df의 item_name 컬럼 값이 Steak Salad 또는 Bowl인 데이터를 데이터 프레임화 한 후, item_name을 기준으로 중복행이 있으면 제거하되 첫번째 케이스만 남기기
- 중복행이 있으면 제거해야 할 때는 drop_duplicates('기준컬럼명')
df_2 = df.loc[(df.item_name == 'Steak Salad') | (df.item_name == 'Bowl')]
df_2.drop_duplicates('item_name')
df_2
- df의 item_name 컬럼 값이 Steak Salad 또는 Bowl인 데이터를 데이터 프레임화 한 후, item_name을 기준으로 중복행이 있으면 제거하되 마지막 케이스만 남기기
- 옵션으로 keep='last'를 사용합니다.
df_2 = df.loc[(df.item_name =='Steak Salad') | (df.item_name =='Bowl')]
df_2 = df_2.drop_duplicates('item_name',keep='last')
df_2
- item_name의 값이 Izze를 Fizzy Lizzy로 수정하기
- 대괄호 안에 조건문 뒤에는 수정하려는 열을 지정합니다.
df.loc[df['item_name'] == 'Izze', 'item_name'] = 'Fizzy Lizzy'
df
- item_name값이 N으로 시작하는 데이터 추출
- str.contains()는 위치 상관없이 그 단어가 포함된 것을 찾아줍니다.
- str.startswith()는 단어의 시작을 설정하고, 해당되는 행을 추출합니다.
df[df.item_name.str.startswith('N')]
- item_name 값의 알파벳 수가 15개 이상인 데이터 인덱싱하기
- str.len()입니다. 저는 len()안에 나머지를 써서 틀렸네요 ㅠㅠ. 각각의 길이를 구할 땐 뒤로 빼서 씁니다.
df[df.item_name.str.len() >= 15]
- new_price값이 lst에 해당하는 경우의 데이터 프레임의 갯수를 구하기
- isin() : 열이 list의 값들을 포함하고 있는 모든 행들을 추출할 때 사용합니다.
lst =[1.69, 2.39, 3.39, 4.45, 9.25, 10.98, 11.75, 16.98]
df_5 = df.loc[df.new_price.isin(lst)]
len(df_5)
오랜만에 기초적인 것을 복습하니 식은 땀이 줄줄 납니다. ㅎㅎㅎ
시간이 지나면 원래 망각하게 되니 실망하지 말고 쭉쭉 나아가보아요!
다음 포스팅에서는 Grouping에 대해 해보겠습니다.
감사합니다.
'Python > 빅데이터분석기사(실기)' 카테고리의 다른 글
데이터 분석 자격증, 한 번에 합격! 후기 풉니다. (1) | 2024.01.02 |
---|---|
[빅분기실기]_작업형 1유형 까먹을 것 같은 것 정리하기!(5)_Pivot/Merge, Concat (0) | 2023.10.18 |
[빅분기실기]_작업형 1유형 까먹을 것 같은 것 정리하기!(4)_Time_Series (0) | 2023.10.17 |
[빅분기실기]_작업형 1유형 까먹을 것 같은 것 정리하기!(3)_apply, map (0) | 2023.10.15 |
[빅분기실기]_작업형 1유형 까먹을 것 같은 것 정리하기!(2)_groupby (0) | 2023.10.12 |