데이터타입 알기

df.dtype

import pandas as pd

two_dimensional_list = [['dongwook', 50, 86], ['sineui', 89, 31], ['ikjoong', 68, 91], ['yoonsoo', 88, 75]]

my_df = pd.DataFrame(two_dimensional_list, columns=['name', 'english_score', 'math_score'], index=['a', 'b', 'c', 'd'])
'''
한 column 내에서는 모든 값이 동일한 데이터 타입입니다.

name             object
english_score     int64
math_score        int64
dtype: object
'''

'''
pandas의 dtype들
pandas에 담을 수 있는 dtype(데이터 타입) 몇 가지를 살펴봅시다.

int64	정수
float64	소수
object	텍스트
bool	불린(참과 거짓)
datetime64	날짜와 시간
category	카테고리

'''

 

 

데이터 읽어들이기

import pandas as pd

iphone_df = pd.read_csv('iphone.csv', index_col=0) # 0번째 인덱스의 컬럼
# 헤더가 없는 경우
# iphone_df = pd.read_csv('iphone.csv, header = None')

print(iphone_df)
print(type(iphone_df))

 

'데이터 분석 > pandas' 카테고리의 다른 글

1. Pandas  (0) 2024.06.03

Pandas

1. 목적 및 사용 용도

  • 목적: 데이터 분석과 조작을 위해 설계된 라이브러리입니다.
  • 사용 용도: 데이터 프레임 객체(DataFrame)를 사용하여 테이블 형태의 데이터를 쉽게 조작하고 분석할 수 있습니다. 데이터 정리, 필터링, 집계, 시계열 분석 등에 주로 사용됩니다.
  • 구조: 판다스 데이터 프레임은 서로 다른 데이터 타입을 가질 수 있는 여러 열로 구성되며, 엑셀이나 SQL의 테이블과 유사한 형식을 가지고 있습니다.

2. 주요 데이터 구조

  • Series: 일차원 배열과 유사한 데이터 구조로, 인덱스를 가지고 있어 특정 값을 쉽게 조회할 수 있습니다.
  • DataFrame: 이차원 배열과 유사한 데이터 구조로, 각 열이 서로 다른 데이터 타입을 가질 수 있습니다. 행과 열에 대해 인덱스를 사용하여 데이터를 조작하고 분석할 수 있습니다.

3. 데이터 조작 및 기능

  • 데이터 필터링, 그룹화, 집계, 결합, 피벗 테이블 생성 등의 데이터 조작에 중점을 둡니다.
  • 결측치 처리, 데이터 정렬, 데이터 형식 변환 등 데이터 분석에 필요한 다양한 기능을 제공합니다.
  • 시계열 데이터 처리에 강력한 기능을 가지고 있습니다.

4. 성능

  • 데이터 조작 및 분석 기능이 풍부하지만, 데이터 구조가 더 복잡하기 때문에 넘파이에 비해 메모리 사용량이 많고, 성능이 떨어질 수 있습니다.
  • 내부적으로 넘파이를 사용하여 성능을 개선하지만, 여전히 대규모 데이터 처리에서는 넘파이에 비해 느릴 수 있습니다.

요약

  • 판다스는 주로 데이터 분석 및 조작에 사용됩니다.
  • 판다스는 서로 다른 데이터 타입을 가진 테이블 형식의 데이터를 다루는 데 강점

 

import pandas as pd
import numpy as np
two_dimensional_list = [['dongwook',50, 86], ['sineui', 89, 31], ['ikjoong', 68, 91,], ['jeongryun', 82, 83]]
my_df = pd.DataFrame(two_dimensional_list, columns=['name', 'eng_score', 'math_score'], index=['a','b','c','d'])

print(my_df)
'''
        name  eng_score  math_score
a   dongwook         50          86
b     sineui         89          31
c    ikjoong         68          91
d  jeongryun         82          83
'''

 

 

★주의

같은 컬럼내에서는 동일한 타입이어야한다.

# 타입 확인
print(type(my_df)) #<class 'pandas.core.frame.DataFrame'>

# 컬럼 확인
print(my_df.columns) #Index(['name', 'eng_score', 'math_score'], dtype='object')

# 인덱스 확인
print(my_df.index) #Index(['a', 'b', 'c', 'd'], dtype='object')

print(my_df.dtypes)
'''
같은 칼럼내에서는 동일한 타입이어야한다.

name          object
eng_score      int64
math_score     int64
dtype: object
'''

 

 

DataFrame 생성 방법

- 2차원 리스트나 2차원 numpy array로 DataFrame을 생성할 수 있다.

- pandas Series를 담고 있는 리스트로도 DataFrame을 만들 수 있다.

 

2차원 리스트

# 2차원리스트
two_dimensional_list = [['dongwook', 50, 86], ['sineui', 89, 31], ['ikjoong', 68, 91], ['yoonsoo', 88, 75]]

# 리스트를 array로 바꾸기
two_dimensional_array = np.array(two_dimensional_list)

# 판다스 시리즈로 리스트에 저장
list_of_series = [
    pd.Series(['dongwook', 50, 86]),
    pd.Series(['sineui', 89, 31]),
    pd.Series(['ikjoong', 68, 91]),
    pd.Series(['yoonsoo', 88, 75])
]

 

데이터프레임 생성

# 아래 셋은 모두 동일합니다
df1 = pd.DataFrame(two_dimensional_list)
df2 = pd.DataFrame(two_dimensional_array)
df3 = pd.DataFrame(list_of_series)
print(df1)
'''
          0   1   2
0  dongwook  50  86
1    sineui  89  31
2   ikjoong  68  91
3   yoonsoo  88  75

'''

 

 

파이썬 딕셔너리(dictionary)로  DataFrame 생성

- 딕셔너리의 key로는 column 이름 입력

- column에 해당하는 리스트, numpy array, 혹은 pandas Series를 딕셔너리의 value로 넣어주면 된다.

 

names = ['dongwook', 'sineui', 'ikjoong', 'yoonsoo']
english_scores = [50, 89, 68, 88]
math_scores = [86, 31, 91, 75]

dict1 = {
    'name': names,
    'english_score': english_scores,
    'math_score': math_scores
}

dict2 = {
    'name': np.array(names),
    'english_score': np.array(english_scores),
    'math_score': np.array(math_scores)
}

dict3 = {
    'name': pd.Series(names),
    'english_score': pd.Series(english_scores),
    'math_score': pd.Series(math_scores)
}
# 아래 셋은 모두 동일합니다
df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
df3 = pd.DataFrame(dict3)
print(df1)

 

리스트가 담긴 딕셔너리가 아니라, 딕셔너리가 담긴 리스트로도 DataFrame을 만들 수 있다.

 

my_list = [
    {'name': 'dongwook', 'english_score': 50, 'math_score': 86},
    {'name': 'sineui', 'english_score': 89, 'math_score': 31},
    {'name': 'ikjoong', 'english_score': 68, 'math_score': 91},
    {'name': 'yoonsoo', 'english_score': 88, 'math_score': 75}
]

df = pd.DataFrame(my_list)
print(df)