본문 바로가기
Pandas

[Pandas] 시리즈와 데이터 프레임 Series and Dataframe(with anaconda)

by moveho 2022. 10. 28.

오늘은 판다스에 대해서 다뤄보려고 한다.

기본적으로 아래와 같이 판다스를 import 해서 pd로 별칭을 주어 사용한다.

import pandas as pd

print(pd.__version__)

버젼확인을 해서 정상적으로 나온다면 사용할준비는 완료 !!!

 

데이터 구조는 크게 시리즈와 데이터 프레임으로 나눌 수 있다

시리즈와 데이터 프레임은 비슷하지만 다르다.

그 차이를 한번 느껴보도록 하자.

시리즈 ( Series )

pd.Series(data = [1,2,3,4], index = ['a', 'b', 'c', 'd'])
pd.Series([1,2,3,4], index = ['a', 'b', 'c', 'd'])

 시리즈는 ond-dimension 데이터 구조를 갖는다

즉, 일차원이며 여러가지 데이터가 아닌 한가지의 종류의 데이터인것이다!!

 

데이터프레임 ( Data Frame )

data = {
'Country': ['Belgium', 'India', 'Brazil'], 
'Capital': ['Brussels', 'New Delhi', 'Brasilia'], 
'Population': [11190846, 1303171035, 207847528]}
df1 = pd.DataFrame(data, index=['a', 'b', 'c'])    #DataFrame대문자 주의
df1.columns = ['country', 'capital', 'populatrion']

데이터 프레임은 two-dimension 이상의 데이터 구조를 갖는다

즉, 2차원의 레이블이 있고 각각의 컬럼 마다 다른 데이터 타입이 들어

갈 수 있는것이다.

 

 

 

Data importing / Exporting

pd.read_csv('file.csv', header=None, nrows=5, delimiter='\t') 
pd.read_excel('file.xlsx')

이런 형태로 파일을 읽을 수 있다. 여기서 주의해야 할 점이 있다. 그것은 바로 불러올 파일의 형태를 잘 맞춰 코드를 작성해줘야한다는것이다. 또한 파일을 미리 확인하고 데이터가 어떤식으로 쪼개져 있는지 확인 후 그에 맞춰 delimiter 을 사용하여 맞춰주도록 하자!

df.to_csv('myDataFrame.csv')
df.to_excel('dir/myDataFrame.xlsx', sheet_name='Sheet1')

이런 형태로 파일을 저장 할 수 있다.

데이터를 잘 임포팅 해서 불러왔다면 시작이 반! 

판다스를 자유자재로 사용 할 준비가 된 것이다.

 

판다스의 기본적인 데이터 검색 방법

# 데이터 검색
df5.head() #상위 5개 데이터
df5.head(2) #상위 2개 데이터
df5.tail() #하위 5개 데이터
df5.shape #데이터 모양
df5.index #데이터 인덱스
df5.columns #컬럼이름
df5.dtypes #데이터 타입 *** 모델링시 중요한 정보
df5.ndim #차원
df5.size #요소갯수
df5.values #넘파이 배열 ** 이미지 처리시 많이 사용
df5.info() #모든 정보를 요약
df5.count() #결측치 제외 갯수

#통계
df1.describe() #기초통계량
df1.mean() #평균
df1.median() #중위수
df1.sum() #합계
df1.min() #최소
df1.max() #최대
df1.var() #분산
df1.std() #표준편차

이런 기능들을 사용하여 데이터를 자유자재로 추출하고 사용 할 수 있다.

이런 기능들을 이용하여 예제로 연습해보자!

 

1. 데이터셋을 임포트해서 users라는 변수에 저장한후 user_id를 인덱스로 사용하시오.

users = pd.read_csv('C:/Users/ADMIN/occupation.txt', delimiter='|')
users.index.names = ['user_id']

우선 데이터 경로를 알맞게 설정해 준 후 잘 읽어준다

users.index.name 이렇게 인덱스 이름을 변경해준다

index 이름이 user_id로 변경

2. Display the first 25 rows. 처음 25줄 출력

users.head(25)

25줄의 데이터를 출력

참조로 끝에서부터 데이터를 불러오려고 한다면 tail 을 사용할수있다.

3.  What is the number of observations in the dataset? 관측치의 수

users.shape[0]

4. Print the name of all the columns. 모든 컬럼의 이름

users.columns

5. Print only the occupation column 직업컬럼만 출력 (특정컬럼만 출력)

users.occupation

6. What is the mean age of users? 모든 사용자의 나이의 평균

users.age.mean()

7. How many different occupations there are in this dataset? 직업의 종류는?

users.groupby('occupation').count()
a = users.groupby('occupation').count()
a.index

그룹바이를 이용해 특정 컬럼인 occupation을 묶어줬고 그룹바이를 사용하려면 뒤에 무조건 기능을 하나 붙여야 한다 그렇지 않으면 syntax 오류를 접할것이다.

직업 종류만 추출

 

8. What is the age with least occurrence? 가장 적게 나오는 나이는?

b = users.groupby('age').count()['occupation'].sort_values(ascending=False)
b.tail()
b.min()
b[b==b.min()]

각각 b의 변수 값                                                               b의 tail 값                                                                b.min값(1)과 같으면 출력                           

b.min()값은 바로 1

 

 

큰 부피의 데이터들을 쉽게 처리할 수 있는 pandas를 살펴보았다

 

끝~~

댓글