머신러닝

본문 바로가기
사이트 내 전체검색


머신러닝
머신러닝

8. 기술통계 메소드

페이지 정보

작성자 관리자 댓글 1건 조회 2,048회 작성일 20-02-18 20:03

본문

8. 기술통계 메소드

# 기술 통계 계산

# pandas 는 일반적인 수학/통계 메서드를 가지고 있다.
# pandas의 메서드는 처음부터 누락된 데이터를 제외하도록 설계되어 있다.
 

실습1.


# -*- coding: utf-8 -*-

import pandas as pd
from pandas import Series, DataFrame
import numpy as np

df = DataFrame([[1.4, np.nan], [7.1, -4.5],[np.nan, np.nan],[0.75, -1.3]],
 index=['a', 'b', 'c', 'd'],
 columns=['one', 'two'])

print(df)
print("-------------------------------")

#sum()메서드는 각 컬럼의 합을 더해서 Series 객체를 반환한다.
print(df.sum())
print("-------------------------------")

print(df.sum(axis=1)) #각행의 합을 반환한다.
print("-------------------------------")

# 전체 행이나 칼럼의 값이 NA가 아니라면 NA 값은 제외시키고 계산을 하는데
# skipna옵션은 전체 행이나 칼럼의 값이 NA가 아니라도 제외시키지 않을 수 있다.
# skipna의 기본값은 True

print(df.sum(axis=1, skipna=False))


결과.



3.PNG



실습2.


# -*- coding: utf-8 -*-

import pandas as pd
from pandas import Series, DataFrame
import numpy as np

df = DataFrame([[1.4, np.nan], [7.1, -4.5],[np.nan, np.nan],[0.75, -1.3]],
 index=['a', 'b', 'c', 'd'],
 columns=['one', 'two'])

print(df)
print("-------------------------------")

# idxmin, idxmax와 같은 메서드는 최소, 최대값을 가지고 있는 색인 값 같은
# 간접 통계를 반환한다.

print(df.idxmax())

print("-------------------------------")

# 누산 메서드 : cumsum()

print(df.cumsum())


결과.



4.PNG



실습3.


# -*- coding: utf-8 -*-

import pandas as pd
from pandas import Series, DataFrame
import numpy as np

# 유일한 값, 도수 메서드

s1 = Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])

unique = s1.unique() # 중복값을 없애는 메서드

print(unique) #unique()에 의한 결과값은 정렬되지 않은 상태로 반환된다.

print("-------------------------------")

cnt = s1.value_counts() # 값의 수를 계산(도수), 반환값은 Series 객체

print(cnt) # 내림차순으로 정렬된다.
print("-------------------------------")

# isin 메서드는 어떤 값이 Series에 있는지 나타내는 메소드
# 불리언 값(True, False)을 반환한다.
# DataFrame, Series에서 원하는 값을 골라내고 싶을 때 유용하게 사용하는 메소드

print(s1)
print("-------------------------------")

mask = s1.isin(['b', 'c'])

print(mask)
print("-------------------------------")

print(s1[mask])
 


결과.



5.PNG



실습4.


# -*- coding: utf-8 -*-

import pandas as pd
from pandas import Series, DataFrame
import numpy as np

data = DataFrame({'Q1' : [1,3,4,3,4],
 'Q2':[2,3,1,2,3],
 'Q3':[1,5,2,4,4]})

print(data)
print("-------------------------------")

res = data.apply(pd.value_counts)
print(res)
print("-------------------------------")

res = data.apply(pd.value_counts).fillna(0)

print(res)



결과.


6.PNG



실습5.


# -*- coding: utf-8 -*-

import pandas as pd
from pandas import Series, DataFrame
import numpy as np

# 누락된 데이터 처리(pandas 의 설계 목표 중 하나는 누락된 데이터를 쉽게 처리하는 것)

#pandas 에서는 누락된 데이터를 실수든 아니든 모두 NaN(Not a Number)으로 취급한다.

stringData = Series(['aaa', 'bbbb', np.nan, 'ccccc'])
print(stringData)
print("-------------------------------")

# 이러한 NaN의 값은  파이썬의 None값 NA와 같은 값으로 취급된다.
print(stringData.isnull())
print("-------------------------------")

stringData[0] = None

print(stringData.isnull())
print("-------------------------------")

print(stringData)
 


결과.



7.PNG



# 누락된 데이터 골라내기
# dropna함수를 이용하는 방법 등 여러 방법이 있을 수 있다.
# dropna를 사용하는 것이 유용한 방법이며, 사용 결과값으로 Series객체를 반환
 


실습6.


# -*- coding: utf-8 -*-

import pandas as pd
from pandas import Series, DataFrame
import numpy as np
from numpy import nan as NA
import pandas as pd

data = Series([1,NA, 3.4, NA, 8])

print(data.dropna())
print("-------------------------------")

# 불리언 색인을 이용해서 직접 계산한 후에 가져오기

print(data.notnull())
print("-------------------------------")

print(data[data.notnull()])
 


결과.


8.PNG




# DataFrame에서 누락된 데이터를 골라 내기
# dropna는 기본적으로 NA값이 하나라도 있는 로우는 제외시킨다.
 


실습7.


# -*- coding: utf-8 -*-

import pandas as pd
from pandas import Series, DataFrame
import numpy as np
from numpy import nan as NA
import pandas as pd

data = DataFrame([[1,5.5,3], [1,NA,NA], [NA, NA, NA], [NA, 3.3, 3]])

print(data)
print("-------------------------------")

print(data.dropna())
print("-------------------------------")

#how='all' 옵션을 주면 모든 값이 NA인 행만 제외된다.

print(data.dropna(how='all'))
print("-------------------------------")

data[4] = NA

print(data)
print("-------------------------------")

print(data.dropna(how='all', axis=1))
 


결과.


9.PNG



# 누락된 값을 채우기
# 데이터 프레임에서는 누락된 데이터를 완벽하게 골라낼 수 가 없으므로
# 다른 데이터도 함께 버려지게 된다. 이런 경우에는 fillna메서드를 활용해서
# 비어있는 값(구멍)을 채워주면 데이터의 손실을 막을 수 있다.
 


실습8.


# -*- coding: utf-8 -*-

import pandas as pd
from pandas import Series, DataFrame
import numpy as np
from numpy import nan as NA
import pandas as pd

data2 = DataFrame([[1,2,3,NA],[NA, 33, 11,NA],[11,NA,NA,NA],[43, NA, NA, NA]])

print(data2)
print("-------------------------------")

# 몇개의 value가 들어 있는 행을 가져오고 싶을 경우 사용되는 인자는 thresh

print(data2.dropna(thresh=2))
print("-------------------------------")


print(data2.fillna(0))
print("-------------------------------")

#fillna의 활용에 따라 각 칼럼마다 다른 값을 채워넣을 수 있다.

print(data2.fillna({1:10, 3:30}))
print("-------------------------------")

print(data2)
print("-------------------------------")

print(data2.fillna(method='ffill', limit = 1))
 


결과.




10.PNG



실습9.


# -*- coding: utf-8 -*-

import pandas as pd
from pandas import Series, DataFrame
import numpy as np
from numpy import nan as NA
import pandas as pd

data3 = Series([1, NA, 4, NA, 7])

print(data3)
print("-------------------------------")

print(data3.fillna(data3.mean()))
 


결과.


11.PNG

댓글목록

관리자님의 댓글

관리자 작성일

NA : Not Available


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.