-
자주 쓰는 Pandas 코드pandas & duckdb 2024. 8. 13. 11:08
데이터 통계 보기
df.info() df.describe() df.describe(include='object') df.value_counts()데이터 필터링
df[['name', 'age']] df.loc[1] # 두번째 row 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 으로 리턴하기
df.loc[0, "age"] 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 속성
df.ndim df.shape df.columns df.dtypes df.valuesDataFrame 만들기
import pandas as pd df = pd.DataFrame( data=[ ("A", 10), ("B", 20) ], columns=["name", "age"] ) print(df) # name age # 0 A 10 # 1 B 20df = 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 6Row 추가 하기
s = pd.Series([1, 2]) s[5] = 8 # 0 1 # 1 2 # 5 8 df = pd.DataFrame( [[1, 2], [3, 4]], columns=["A", "B"] ) df.loc[len(df)] = [5, 6] # 0 1,2 # 1 3,4 # 3 5,6GroupBy
# 결과가 Series 로 출력됨 df.groupby(["class", "who"])["fare"].count() # 결과가 DataFrame 으로 출력됨 df.groupby(["class", "who"])[["fare"]].count() # fare 에 대한 count, mean # age 에 대한 count, mean 이 구해 짐 x = df.groupby(["class", "who"])[["fare", "age"]].agg(["count", "mean"]) # fare 에 대한 count 만 보려고 할 때 2가지 방법 x["fare"]["count"] x[("fare", "count")] # 참고 df.groupby(["class", "who"])[["fare", "age"]].agg(["count", "mean"]).reset_index(drop=True)출력시 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)timestamp 타입이 포함된 spark dataframe 을 pandas dataframe 변환시 오류 대응
TypeError: Casting to unit-less dtype 'datetime64' is not supported. Pass e.g. 'datetime64[ns]' instead.
에러 원인- 스키마에서 timestamp 컬럼: modifyTime: timestamp (nullable = true)
- df.limit(3).toPandas() 수행 시, PySpark가 내부적으로 pandas 타입으로 변환하면서 datetime64 타입 캐스팅을 시도
timestamp 컬럼을 string 으로 변환해 사용
spark_df2 = spark_df.withColumn("modifyTime_str", df["modifyTime"].cast("string")).drop("modifyTime") spark_df2.limit(3).toPandas()'pandas & duckdb' 카테고리의 다른 글
DuckDB 에서 PostgreSQL 연결하기 (0) 2025.10.31 DuckDB 에서 pyspark api 사용하기 (0) 2025.10.31 Time Series 데이터를 시각화 (0) 2022.10.25 데이터 전처리, 추가, 삭제, 변환 (0) 2022.10.08 복사와 결측치 (0) 2022.10.08