본문 바로가기

Data/Data Analysis

(43)
[Pandas] Datacamp - Clean a variable 본 내용은 DataCamp에서 배운내용을 간단하게 정리한 내용입니닷 - replace 함수 NaN 이 들어가있는 column에 대해서 특정 값으로 바꾸고싶을 때 자주사용하는 함수 temp.replace([8], np.nan, inplace=True) NaN이 들어가있는 index에 대해서 8로 대체 또 다른방법으로는 fillna함수를 사용 temp['target_column'].fillna(8) - value_counts 함수 특정 column에 대해서 값을 가지고있는 행을 count하는 함수 temp['target_column'].value_counts() - describe 함수 특정 column에 대해서 통계를 내줌 (raw count, min, max, mean, 4분위수등) temp['targe..
[Pyspark] UDF함수에서 return 을 list형식으로 하고싶을 때 pyspark 에서 자주쓰이는 udf 함수 가끔 udf함수를 이용해서 list를 return할 때가 있는데, 여기서 문제는 printSchema()함수로 pyspark.dataframe을 확인할때 data type이 array(또는 list)형식으로 찍히는게 아니고 string으로 찍힌다. 따라서 udf함수가 return을 할 때 따로 return하는 데이터 타입을 선언해줘야한다. 다음코드와 같이 해줄수가있다 import pyspark.sql.functions as F from pyspark.sql.types import * def sorting_team_id(temp): return sorted(temp) change = F.udf(lambda z: sorting_team_id(z), ArrayType..
[Pyspark] sorted와 sort 의 차이 pyspark에서 예를들어서 collect_list함수를 사용할때 단점이 있는데 - 순서가 상관없이 list가 생성이된다 따라서 collect_list사용후 sorting을 해줘야 나중에 groupBy등 함수를 사용할때 똑바르게 합쳐지는데 이때 sorting을 udf함수로 직접 만들어줘서 사용해야한다. import pyspark.sql.functions as F def sorting_list_pyspark_ver1(temp): return temp.sort() def sorting_list_pyspark_ver2(temp): return sorted(temp) 이렇게 두가지 방법으로 선언할수가있는데 언뜻보기에는 별다른 문제가 없어보이지만 직접 실행해보면 ver1에는 원하는 값이 안나오고 null값이 찍히..
[Pyspark] pyspark 로컬에 설치 1. 자바 설치 커맨드창에 다음과 같이 입력했을때 출력이 있어야함 > java -version > java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) Client VM (build 25.144-b01, mixed mode, sharing) 위와 같이 나오지않는다면 다음링크에서 설치 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Java SE Development Kit 8 - Downloads Java SE Development Kit 8 Downloads Thank you for ..
[Pyspark] dataframe join 문 pyspark dataframe을 처리할때 join문을 많이 쓰이게 되는데 항상 sql 문으로 변환하고 join문을 쓰기에는 너무 불필요한 과정이 많아서 pyspark로 한번 join을 해보자 먼저 예제를 보면 ta = TableA.alias('ta') tb = TableB.alias('tb') 이렇게 두개의 테이블을 선언하고 inner_join = ta.join(tb, ta.name == tb.name) inner_join.show() join함수를 사용하여 두 dataframe을 합체시키는데 실제로는 매 테이블을 일일히 다 따로 선언하고 join시키기엔 귀찮다 (그렇다 난 귀차니즘이다) 그래서 혹시나해서 바로 join할수있나 살펴 보았는데 저렇게 하나씩 선언할필요없이 바로 join이 가능했다 위에 껄..
[Pyspark] pyspark 함수 정리(3) select(*cols) Dataframe column선택하여 해당 column을 출력123456>>> df.select('*').collect()[Row(age=2, name='Alice'), Row(age=5, name='Bob')]>>> df.select('name', 'age').collect()[Row(name='Alice', age=2), Row(name='Bob', age=5)]>>> df.select(df.name, (df.age + 10).alias('age')).collect()[Row(name='Alice', age=12), Row(name='Bob', age=15)] selectExpr(*expr)select와 기능은 같지만 추가적인 산술, SQL식 언어를 위해서 사용하는 함수 12..
[Pyspark] pyspark 함수 정리(2) drop(*cols) dataframe에서 지우고싶은 column이 있을때 해당 함수를 사용한다. 반환되는 값은 삭제가된 이후의 dataframe이 나오게 된다 1234567891011121314>>> df.drop('age').collect()[Row(name='Alice'), Row(name='Bob')] >>> df.drop(df.age).collect()[Row(name='Alice'), Row(name='Bob')] >>> df.join(df2, df.name == df2.name, 'inner').drop(df.name).collect()[Row(age=5, height=85, name='Bob')] >>> df.join(df2, df.name == df2.name, 'inner').drop(..
[Pyspark] pyspark 함수 정리(1) csv, parquet파일 읽어오기12345678910# CSV 파일 읽기df = spark.read.csv("...")df.printSchema()df.show() # parquet으로 저장된 파일 읽기 df2 = spark.read.parquet("...")df2.printSchema()df2.show() agg(*exprs)exprs에 들어있는 표현식으로 dataframe 계산"age" : "max" -> age column에서 최대값을 반환 123456df.agg({"age": "max"}).collect()>>> [Row(max(age) = 5)] from pyspark.sql import functions as Fdf.agg(F.min(df.age)).collect()>>> [Row(min(a..