pandas & duckdb
자주 쓰는 Pandas 코드
wefree
2024. 8. 13. 11:08
데이터 통계 보기
df.info()
df.describe()
df.describe(include='object')
df.value_counts()
데이터 필터링
df[['name', 'age']]
df.loc[df['a'] > 10, ['a', 'c']] # Select rows meeting loglogical condition, and only the specific columns .
df.sample(frac=0.5)
df.sample(n=10) # Randomly select n rows.
1개의 Cell 읽어 DataFrame 이 아닌 원래 type 으로 리턴하기
web_doc_meta.loc[web_doc_meta['key'] == 'vTime', 'value'].to_numpy()[0]
Column 타입 변경하기
df["is_deleted"] = df["is_deleted"].astype(str)
기존 데이터를 변환해 새로운 Column 으로 추가하기
import pendulum
df["visitTime"] = df["vTime"].apply(
lambda ts: pendulum.from_timestamp(ts / 1000, tz="Asia/Seoul").format("YYYY-MM-DD HH:mm:ss.SSSZ")
)
duckdb UDF 사용하기 - 참고
import pendulum
import duckdb
duckdb.create_function("convert_vtime", lambda ts: pendulum.from_timestamp(ts / 1000, tz="Asia/Seoul").format("YYYY-MM-DD HH:mm:ss.SSSZ")
df = duckdb.sql("""select *, convert_time(vTime) as visitTime from df""").to_df()
Plot
df['cost'].plot(kind='hist', range=[0, 1000], xlabel='cost', ylabel='count', bins=30, grid=True)
DataFrame 만들기
import pandas as pd
df = pd.DataFrame(
data=[
("A", 10),
("B", 20)
],
columns=["name", "age"]
)
print(df)
# name age
# 0 A 10
# 1 B 20
df = pd.DataFrame(
{
'name': ['A', 'B', 'C'],
'age': [1, 2, 3],
'children': [4, 5, 6]
}
)
print(df)
# name age children
# 0 A 1 4
# 1 B 2 5
# 2 C 3 6
출력시 Index 숨기기
https://stackoverflow.com/a/57649212/5137193
df.style.hide()
CSV 저장시 Index 제외하기 & quoting
- quoting 옵션이 csv.QUOTE_ALL로 설정되면 모든 값이 쌍따옴표로 감싸집니다.
- 기본값은 csv.QUOTE_MINIMAL로, 필요한 경우에만 따옴표를 추가합니다.
- sv.QUOTE_NONE을 사용할 경우, 데이터에 쉼표(,)가 포함되어 있으면 문제가 발생할 수 있습니다.
df.to_csv("output.csv", sep='\t', index=False, quoting=csv.QUOTE_NONE)