본문 바로가기
Study/Machine Learning

Pandas #1

Machine Learning을 위해 Pandas를 한 번 훑어보자.

 

1. Series

seires는 데이터를 딕셔너리와 같이 만들어주는 함수라고 생각하면 된다. 

temp = pd.Series([10,20,-10,0])
print(temp)

위와 같이 코드를 짰을 때 아래와 같은 리스트를 얻을 수 있다. 

인덱스도 우리가 정해줄 수 있다. 

temp = pd.Series([10,20,-10,0],index =[1,2,3,4])
print(temp)

2. DataFrame

2차원 데이터(Series들의 모임)이다.

data = {
    '이름' : ['채치수', '정대만', '송태섭', '서태웅', '강백호', '변덕규', '황태산', '윤대협'],
    '학교' : ['북산고', '북산고', '북산고', '북산고', '북산고', '능남고', '능남고', '능남고'],
    '키' : [197, 184, 168, 187, 188, 202, 188, 190],
    '국어' : [90, 40, 80, 40, 15, 80, 55, 100],
    '영어' : [85, 35, 75, 60, 20, 100, 65, 85],
    '수학' : [100, 50, 70, 70, 10, 95, 45, 90],
    '과학' : [95, 55, 80, 75, 35, 85, 40, 95],
    '사회' : [85, 25, 75, 80, 10, 80, 35, 95],
    'SW특기' : ['Python', 'Java', 'Javascript', '', '', 'C', 'PYTHON', 'C#']
}
df = pd.DataFrame(data)
print(df)

위와 같이 데이터를 받아주고 DataFrame을 씌워주면 아래와 같은 Data set을 얻을 수 있다.

이 DataFrame에서도 인덱스를 Series와 같이 지정이 가능하다. 또한 column을 지정해서 데이터 셋을 만들 수 있다. 

df = pd.DataFrame(data,columns=['이름','학교','키'])

여기서 column의 순서는 지정하는 대로 출력해줄 수 있다. 

3. Index

df.index.name = '번호'

위와 같이 index의 name을 정해주면 

원래는 아무것도 없던 인덱스 name에 번호라는 이름이 붙어서 나오게 된다. 

df.reset_index()

그리고 index를 reset 해주면

사라지는 것이 아니라 위와 같이 옆에 인덱스가 하나 더 붙게 된다. 

df.reset_index(drop=True)

 

기존에 있던 index를 지워주기 위해서 인자에 drop=True를 달아주면

없어지게 된다. 하지만, 실제로 데이터에 반영이 된 것은 아니다. 데이터에 실제로 반영하고 싶으면 Inplace를 넣어줘야 한다. 

df.reset_index(drop=True,inplace=True)

drop 옆에 Inplace를 넣어줬다.

그럼 성공적으로 원래 데이터에도 index를 삭제할 수 있다.

 

set_index함수를 통해 직접 index의 순서를 정해줄 수 있다. 위와 같은 데이터 셋에 인덱스를 정해준다고 가정하자. 

df.set_index('이름',inplace=True)



그럼 위와 같이 이름이 index로 설정되어 출력된다. 

df.sort_index(inplace=True)

정렬을 하고 싶다면 위와 같이 sort_index를 해주고 실제 데이터에 적용하는 inplace를 붙여주면 된다. 

그러면 이름 순서에 맞게 정렬이 되게 된다.

 

4. 데이터 확인

위의 데이터를 그대로 쓰면서 

df.describe()

위 명령어를 입력해보자

그럼 위 사진과 같이 계산 가능한 데이터에 대해 Column 별로 데이터의 개수, 평균, 표준 편차 등을 보여준다.

df.info()

info() 명령어를 입력하면 

위와 같이 data의 type은 무엇인지, 채워지지 않은 데이터가 있는지, memory는 몇을 차지하는지를 보여준다.

위의 데이터들은 크기가 작기 때문에 그냥 가져와도 한눈에 형태를 파악할 수 있다. 하지만, 실제 데이터는 그렇지 않은 것들이 대부분이기 때문에 특정 몇 개 만을 가져와서 분석을 해야 한다. 그럴 때 사용하는 것이 head()와 tail()이다.

df.head() //default값은 5, 인자에 숫자를 넣어주는 만큼 처음부터 숫자만큼 column을 가져옴
df.tail() //default값은 5, 인자에 숫자를 넣어주는 만큼 마지막부터 숫자만큼 column을 가져옴

위 명령어를 실행했을 때 나오는 head와 tail의 정보이다.

df.values	//데이터의 values값들을 보여줌
df.index	//데이터의 index 정보를 보여줌
df.columns	//데이터의 columns 정보들을 보여줌
df.shape	//데이터의 크기를 보여줌

전체적인 데이터의 정보들을 위 명령어들로 확인할 수 있지만, series 각각의 정보들도 확인할 수 있다. 

print(df['키'].describe())	//'키' Column의 정보를 확인할 수 있다.
print(df['키'].sum())		//'키' Column의 sum을 구할 수 있다.
print(df['키'].nlargest(3))	//'키' Column의 큰 값부터 3개를 나열할 수 있다.
print(df['SW특기'].count())	//'SW특기' Column의 데이터 갯수를 셀 수 있다.
print(df['학교'].unique())	//'학교' Column의 독특한 데이터를 구할 수 있다.

'Study > Machine Learning' 카테고리의 다른 글

Pandas #2  (0) 2022.03.16
Machine Learning #3  (0) 2022.02.03
Machine Learning #2  (0) 2022.01.30
Machine Learning #1  (0) 2022.01.20