In [1]:
import findspark
In [2]:
findspark.init('/home/hak/spark-2.4.5-bin-hadoop2.7/')
In [3]:
from pyspark.sql import SparkSession
In [4]:
spark = SparkSession.builder.appName('MissingData').getOrCreate()
In [5]:
df = spark.read.csv('ContainsNull.csv',header=True, inferSchema=True)
In [6]:
df.show()
In [44]:
df.printSchema()
In [7]:
df.na.drop().show() #not availiable
In [10]:
#두개이상 값을 갖고있는 행을 가져오고 싶으면
df.na.drop(thresh=2).show()
In [12]:
#subset으로 특정 열부분만 삭제할 수 있다.
df.na.drop(subset=['Sales']).show()
In [18]:
df.na.drop(how='any').show()
#하나라도 Null값이라면
In [17]:
df.na.drop(how='all').show()
#전체가 Null값이면
In [20]:
#Null 부분에 값을 넣고 싶으면
#fill안에 값이 스트링이므로 스키마가 String인 Null값인 곳만 채워진다.
df.na.fill('NEW VALUE').show()
In [21]:
df.printSchema()
In [22]:
#숫자를 넣으면 스키마가 숫자인 부분만 적용된다.
df.na.fill(0).show()
In [23]:
#특정 칼럼에만 Null값을 바꾸고 싶으면
df.na.fill('No Name',subset=['Name']).show()
In [24]:
from pyspark.sql.functions import mean
In [27]:
mean_value = df.select(mean(df['Sales'])).collect()
In [36]:
mean_value[0]
# mean_value[0][0] <- 400.5 값만 가져오고 싶을 때
Out[36]:
In [37]:
mean_sales = mean_value[0][0]
In [32]:
df.na.fill(mean_sales, subset=['Sales']).show() #평균값을 구하고 null값에 평균값을 대입
In [33]:
#한꺼번에 작성하는 방법
df.na.fill(df.select(mean(df['Sales'])).collect()[0][0],subset=['Sales']).show()
반응형
'빅데이터 | 머신러닝 | 딥러닝 > 빅데이터 분석' 카테고리의 다른 글
[pandas/Selenium/BeautifulSoup4] 야구 시즌 기록 데이터(STATIZ) 웹 크롤링 후 DataFrame 만들기. DataFrame을 csv로 만들고 csv파일 로컬에 저장하기! (feat. Colab) (6) | 2020.09.08 |
---|---|
[pandas] 공공 데이터 XML 크롤링을 통해 dataFrame으로 만들어보기 (0) | 2020.09.04 |
[pandas] 코로나 수치 예측하기 (feat. Linear Regression) (0) | 2020.05.03 |
spark를 이용해서 Sales 정보 다루기(using groupBy, orderBy) (0) | 2020.04.23 |
spark를 이용해서 삼성전자 주식 분석하기 (0) | 2020.04.15 |