전처리 할 때 알아두면 좋은 함수
import pandas as pd
import numpy as np
위와 같이 라이브러리를 불러오고 대부분 numpy와 함께 쓰인다.
df = pd.DataFrame()
print(type(df['칼럼명']))
내가 어떤 타입을 알기 위해서는 위의 코드를 통해 알아볼 수 있다.
df['칼럼명']=['내용1','내용2',내용3',...]
이런 방법으로 새로운 칼럼을 추가할 수 있다.
df['food']=['rice','noodle','fruit', np.nan, 'something']
그래서 이 칼럼을 나는 없애고 싶다
그러면 다음과 같이 하면 된다.
df=df.drop('food', axis=1)
axis = 0 이라는 것은 행을 의미하고 1은 열을 의미한다.
혹은 조금더 직관적으로
df=df.drop(columns='food')
라고도 작성을할 수 있다.
데이터 요약하기
데이터를 다루려면 우선 데이터의 대략적인 정보를 파악하는 것이 도움이 된다.
df.info()
위의 코드를 사용하면 우리는 데이터프레임의 기본 정보를 볼 수 있는데,
1. 칼럼명
2. 각 칼럼의 데이터 타입
3. 칼럼 개수
4. 각 칼럼별 행의 개수
를 알 수 있다
df.shape
위를 사용하면 데이터 프레임의 크기를 출할 수 있다
df.dtypes
df.index
df.values
위의 코드들을 사용하면 각각
데이터 프레임의 데이터 타입들만 따로 보거나,
데이터 프레임의 인덱스 길이,
데이터 프레임에 들어있는 값들을 array의 형식으로 데이터 프레임을 살펴볼 수 있다.
df.describe()
위의 코드를 통해 데이터 프레임의 요약 정보를 알 수가 있다.
수치형 데이터의 기술 통계 값을 볼 수 있다는 것이다.
df.describe(include='object')
범주형 데이터의 기술 통계값을 보기 우해서는 위와 같은 코드를 사용하면 된다.
df['칼럼명']
위를 이용하면 칼럼명에 해당하는 데이터를 가지고 올 수 있다.
df[['칼럼명']]
데이터프레임의 형태로 칼럼의 데이터를 불러오기 위해서는 [[]] 를 사용하면 된다.
두개 이상의 칼럼명을 가지고 오기 위해서는 아래와 같이 작성하면 된다.
df[['칼럼명1','칼럼명2']]
꼭 리스트로 묶어서 호출하자!
df.loc[0]
을 사용하면 인덱스 명칭으로 데이터를 가져올 수 있다.df.loc[0:2] #0에서 2 까지의 인덱스에 해당하는 데이터 추출
df.loc[[1,2,3]] #1,2,3번째의 데이터를 가지고 온다. 여러개이기 때문에 리스트로 묶어서 적어주자!
여기서 주의할 점은 인덱스 명칭으로 가져오는 것이기 때문에 0,1,2번에 해당하는 데이터를 가지고 오는 것이라는 점이다.df.iloc[0:2]
이러면 인덱스 명칭과는 다르게 0,1번째의 데이터를 가지고오게 될 것이다.
만약 내가 어떤 특정 칼럼에 있는 값들을 인덱스 번호로 사용하고 싶다면
df2=df.set_index('칼럼명')
을 이요하여 설정할 수 있다.
이러면 이 칼럼속 데이터가 인덱스 번호가 된다. 이를 위에서 공부한 내용과 합쳐 보면 다음과 같이 활용할 수 있다
df2.loc[['칼럼명1의 첫번째 데이터', '칼럼명1의 두번째 데이터']]
df2.loc['칼럼명1의 첫번째 데이터': '칼럼명1의 두번째 데이터']
이를 Fancy indexing이라고 부른다.
df.loc[0,'칼럼명']
칼럼명 속 첫번째 데이터를 가지고 올 수 있다.
df.loc[[0,1],'칼럼명']
을 이용하면 칼럼명 속 0과 1번째 데이털르 가지고 오게 된다.
여러 데이터를 동시에 가져오려면
df.loc[[0,1],['칼럼명1','칼럼명2']]
을 통해서 가지고 올 수 있다.
위와 같은 표에서 만약 비타 혹은 vita라는 단어가 포함된 애들을 찾아주고 싶다면
df['약품명'].str.contains('비타|vita')
라고 해주면 될 것이다.
문제는 파이썬은 대소문자를 구별하기 때문에 V가 들어가면 캐치르 하지 못한다.
그렇기 때문에 전부 소문자로 바꿔주고 코드를 돌리면 된다. 소문자로 바꾸는 코드는 다음과 같다.
df['약품명'].str.lower() #소문자로 만들기
df['약품명'].str.upper() #대문자로 만들기
df['약품명_소문자']=df["약품명"].str.lower()
를 이용하면 약품명_소문자라는 칼럼이 생기는 동시에 그안에 소문자로 된 약품명을 소문자로 바꾼 데이터들이 들어가게 될 것이다.
예시를 하나더 들자면
df[df["약품명_소문자"].str.contains("비타|vita") & (df['가격'] > 2000)]
를 이용하면 약품명 소문자에서 비타 혹은 vita가 들어가면서 가격이 2000이상인 데이터들을 데이터 프레임의 형태로 추출할 수 있다.
df.sort_values(by=["가격","약품명"], ascending=[False,True])#(x, y, 0)이면 역순으로 출력하게 된다
을 이용하면 가격순으로 내림차순 정렬을 하고 가은 가격이면 약품명의 글자순으로 정렬을 시키는 코드이다.
df.to_csv("파일명.csv",index=False)
을 이용하면 csv 파일로 저장을 할 수 있고, index=False를 넣으면 인덱스 칼럼을 포함하지 않는다.
pd.read_csv("판다스 실습.csv")
반대로 이를 이용해서 csv를 불러올 수 있게된다.