1. 판다스에서 데이터 읽기
pd.read_csv("읽을 CSV 파일")
pd.read_excel("읽을 EXCEL 파일")
pd.read_json("읽을 JSON 파일")
데이터프레임.head()
데이터프레임.tail(n)
데이터프레임.sample(n)
데이터프레임.info()
데이터프레임.dtypes()
데이터프레임.describe()
데이터프레임.columns
주요 옵션
데이터 프레임의 개별 데이터 확인하기
df.loc[0] # 첫 번째 행
df.loc[0, '이름'] # 첫 번째 행의 '이름' 열 데이터
df.iloc[0] # 첫 번째 행
df.iloc[0, 1] # 첫번 째 행의 두 번째 열 데이터
Ex.
data = {'Name' : ['Alice', 'Bob', 'Christa'],
'Age' : [3, 10, 2],
'City' : ['New York', 'Seoul', 'Dockyo']}
df_3 = pd.DataFrame(data)
인덱스를 사용한 데이터 선택
조건부 필터링
isin() 을 사용한 필터링 : 특정 값들이 포함된 행을 필터링할 때 유용함
# 직업이 '학생' 또는 '프리랜서'인 행 선택
filtered_df = df[df['직업'].isin(['학생', '프리랜서'])]
-> 즉 데이터프레임의 특정 열의 값이 isin()의 괄호 안에 들어가는 값들에 걸리는 지 확인할 수 있다.
astype()을 사용한 데이터 타입 변환
df["변환할 컬럼"] = df["변환할 컬럼"].astype(변환할 type)
data = {
"이름" : ["철수", "영희", "민수"],
"가입일" : ["2024-10-04", "2024-10-03", "2024-10-02"]
}
df["가입일] = pd.to_datatime(df["가입일"])
데이터 정렬
데이터프레임.sort_values(by="정렬하고자하는 컬럼", ascending=False)
데이터프레임.sort_index()
데이터 병합
merge를 사용한 데이터프레임 병합
df1 = pd.DataFrame({
"이름" : ["철수", "영희", "민수"],
"나이" : [25, 30, 22]
})
df2 = pd.DataFrame({
"이름" : ["철수", "영희", "지수"],
"직업" : ["학생", "회사원", "프리랜서"]
})
merged_df = pd.merge(df1, df2, on="이름")
# inner JOIN이기 때문에 특정 값이 없다면 삭제해버림
# how 값을 명시해줘서 어떤 JOIN을 할 것인지 표시할 수 있음 (left, outer)
# 공통값이 없다면 NaN으로 채움
print(merged_df)
join()을 사용한 데이터프레임 병합
df3 = pd.DataFrame({
"직업" : ["학생", "회사원", "프리랜서"],
"연봉" : [2000, 3000, 4000]
}, index = ["철수", "영희", "지수"])
joined_df = df3.set_index("이름").join(df3)
print(joined_df)
데이터프레임 연결 (concat)
pd.concat([연결할 열들],axis=0)
데이터 그룹화 및 집계
2. 판다스에서 데이터 저장하기
pd.to_csv("저장할 파일 이름", index=False)
데이터베스에 저장하기
import sqlite3
conn = sqlite3.connect("database.db")
df.to_sql('table_name', conn, if_exists='replace', index=False)
conn,close()
///
name : 저장할 테이블 이름 지정
conn : 데이터베이스 연결 객체를 지정
if_exists : 테이블이 이미 존재할 경우 동작을 지정
idex: 인덱스를 제외하고 지정
데이터 변형
data = {
"이름" : ["철수", "영희", "원수", "지수", "철수", "영희"],
"과목" : ["수학", "영어", "국어", "지구과학", "물리", "화학"],
"점수" : [90, 80, 79, 89, 90, 12]
}
df = pd.DataFrame(data)
grouped = df.groupby("이름") # 이름이 같은 것끼리 묶임
# 여러 집계함수를 동시에 사용하고 싶다면? -> agg 사용
agg_scores = grouped['점수'].agg(["sum", "mean"])
피벗테이블
pivet_table() 사용법
pd.pivot_table(df, index="이름", columns="과목", values="점수", aggfunc="mean")