1. Pandas
Pandas 라이브러리는 시리즈와 데이터프레임(DataFrame)을 다룬다.
데이터프레임은 표 형태를, 시리즈는 한 열(column)만 있는 형태를 생각하면 된다.
데이터프레임과 시리즈는 인덱스와 값으로 이루어지는데 이때 인덱스는 row명을 의미한다.
아래 작성된 예시들에서 "col"은 column명을 가리키고 "row"는 row명을 가리킨다.
일단 import를 하자.
import pandas as pd
2. DataFrame 만들기 / csv로 저장하기
내용 | 코드 |
csv 파일을 읽어 DF 만들기 | df = pd.read_csv("파일명") |
딕셔너리를 DF로 만들기 | df = pd.DataFrame(딕셔너리명) |
데이터를 직접 넣어 DF 만들기 | df = pd.DataFrame([1,3,5], [2,12,24]) #(row1, row2) |
DF를 csv 파일로 저장하기 *index = False 하면 인덱스는 추가 안 됨 |
df.to_csv("파일명") |
3. DataFrame 데이터 확인하기
내용 | 코드 |
전체 정보 개요 (타입, 값 개수) | df.info() |
위부터 #줄 | df.head(#) |
아래부터 #줄 | df.tail(#) |
cols 이름 | df.columns |
특정 col (시리즈 형태) | df["col1"] |
특정 col (DF 형태) | df[["col1"]] |
특정 cols (DF 형태) | df[["col1"], ["col2"], ...] |
특정 row (시리즈 형태) | df.loc["row1"] |
특정 row (DF 형태) | df.loc[["row1"]] |
특정 rows (DF 형태) | df.loc[["row1", "row2"]] |
특정 rows, cols | df.loc[["row1","row,3"], "col1"] |
특정 rows, cols (인덱싱 수)***** | df.iloc[[1, 3], [2:6]] |
조건에 맞는 rows *논리연산자 : & (and) | (or) ~ (not) |
df[df["col2" > 1000]] |
col 기준으로 오름차순 | df.sort_values("col1") |
col 기준으로 내림차순 | df.sort_values("col1", ascending=False) |
4. DataFrame 타입 변경하기 / 통계 확인하기
내용 | 코드 |
col에 있는 유니크한 값 개수 | df["col1"].value_counts() |
col의 타입 변환 | df["col1"] = df["col1"].astype(타입) |
col을 숫자 타입으로 변환 | df["col1"] = pd.to_numeric(df["col1"]) |
모든 col 전체 평균 | df.mean() |
특정 col 전체 평균 | df["col1"].mean() |
그룹화한 값에 대한 col의 평균 | df.groupby(["col1", "col3"])["col6"].mean() |
숫자 타입 col들의 각 통계수치 | df.describe() |
col을 날짜 타입으로 변환 | df["col1"] = pd.to_datetime(df["col1"]) |
날짜 타입 col1의 연도를 별도 col2로 생성 | df["col2"] = df["col1"].dt.year |
4. DataFrame 데이터 수정하기
내용 | 코드 |
새로운 col 추가하기 (비어있음) | df["new_col"] = '' |
새로운 col 추가하기 (다른 열 이용) | df["new_col"] = df["col1"] * 5 |
col 값들 일괄 변경하기 | df["col1"] = "a" df["col1"] = df["col1"] + 300 |
col 값들 일괄 변경하기 (함수 이용) | df["col1"] = df["col1"].apply(함수명) |
col의 특정 값을 특정 값으로 변경하기 (딕셔너리 이용) *key와 같은 값을 value로 바꿈 |
df["col1"] = df["col1"].map(딕셔너리) |
5. DataFrame 데이터 정제하기
내용 | 코드 |
특정 col/row 삭제 *axis=1은 col 삭제 |
df = df.drop("col/row", axis=1/0) |
결측치 탐색 | print(df.isnull().sum()) |
결측치에 값 채우기 | df = df.fillna(채울 값) df["col"] = df["col"].fillna(채울 값) |
결측치 있는 row 삭제 *ignore_index = True 이면 인덱스 초기화 |
df = df.dropna() df = df.dropna(subset="col", ignore_index=True) |
열 이름 바꾸기 | df = df.rename(columns={"기존col" : "새col"} |
인덱스 재지정 | df = df.reset_index() |
6. DataFrame끼리 병합하기
내용 | 코드 |
위 아래로 붙이기 *inner는 교집합, outer은 합집합 |
pd.concat([df_1, df_2], axis=0, join="inner", ignore_index=True) |
옆에 붙이기 *inner는 교집합, outer은 합집합 |
pd.concat([df_1, df_2], axis=1, join="outer", ignore_index=True) |
특정 col 기준으로 합치기 | pdf.merge(df_1, df_2, on="col", how="inner") *how= "inner" 또는 "outer" 또는 "left" 또는 "right" |
'코딩' 카테고리의 다른 글
[Python] Seaborn 라이브러리 (1) | 2024.11.14 |
---|---|
[Python] Matplotlib 라이브러리 (0) | 2024.11.13 |
[Python] 경로 (절대경로, 상대경로, os, pathlib, shutil) (1) | 2024.11.11 |
[Python] 파일 다루기 (txt, csv, with문, json) (0) | 2024.11.10 |
[Python] 프롬프트 사용 (가상환경, 라이브러리) (1) | 2024.11.09 |