드레:
코딩 뿌시기
드레:
전체 방문자
오늘
어제
  • 분류 전체보기 (268)
    • Python (74)
      • Python 기초 (42)
      • Numpy (8)
      • Pandas (22)
    • Machine Learning (31)
      • Machine Learning (1)
      • Deep Learning (27)
    • AWS (22)
      • RDS (3)
      • EC2 (9)
      • Lambda (8)
      • S3 (2)
    • MySQL (24)
    • Git (8)
    • Streamlit (12)
    • REST API (22)
    • Java (24)
    • Android (36)
    • Debugging (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 깃이그노어
  • Transfer Learning
  • flask
  • pandas
  • Lambda
  • EC2
  • Ann
  • serverless
  • JWT
  • 서버리스
  • github
  • aws s3
  • Python
  • rest api
  • fine tuning
  • tensorflow
  • 액션바
  • Callback
  • Retrofit2
  • AWS Lambda
  • Streamlit
  • Java
  • 네이버 API
  • 딥러닝
  • GET
  • AWS
  • volley
  • API
  • 안드로이드 스튜디오
  • CNN

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
드레:

코딩 뿌시기

Pandas 활용 (1) - Series/DataFrame 생성, read_csv, to_csv
Python/Pandas

Pandas 활용 (1) - Series/DataFrame 생성, read_csv, to_csv

2022. 11. 24. 18:05
블로그_판다스1
In [1]:
from IPython.display import display, HTML
display(HTML("<style>.container { width:90% !important; }</style>"))
# 코드 입력창의 너비를 조정하는 코드입니다. 

Pandas의 특징¶

  • 파이썬 언어로 제작된 데이터 조작과 분석을 위한 라이브러리.
  • 기본적인 통계데이터 제공.
  • NaN values를 알아서 처리한다.
  • 데이터셋들을 merge 할 수 있다.

Panas Series¶

판다스의 1차원 데이터를 시리즈라고 부른다

In [2]:
# pandas 라이브러리 임포트
import pandas as pd 
In [3]:
data = [30, 6, 'Yes', 'No']
In [4]:
# 시리즈를 만든다
x = pd.Series(data= data)
In [5]:
x
Out[5]:
0     30
1      6
2    Yes
3     No
dtype: object
In [7]:
# 인덱스 확인
x.index
Out[7]:
RangeIndex(start=0, stop=4, step=1)
In [8]:
# 데이터 확인
x.values  # ndarray
Out[8]:
array([30, 6, 'Yes', 'No'], dtype=object)
In [6]:
# 인덱스에 이름 붙이기
index = ['eggs', 'apples', 'milk', 'bread']
In [7]:
groceries = pd.Series(data= data, index= index)
In [8]:
groceries
Out[8]:
eggs       30
apples      6
milk      Yes
bread      No
dtype: object
In [9]:
groceries.index  
Out[9]:
Index(['eggs', 'apples', 'milk', 'bread'], dtype='object')
In [10]:
groceries.values
Out[10]:
array([30, 6, 'Yes', 'No'], dtype=object)
In [11]:
# shape 확인
groceries.shape
Out[11]:
(4,)
In [12]:
# 차원 확인
groceries.ndim
Out[12]:
1
In [13]:
# 데이터 갯수
groceries.size
Out[13]:
4
In [14]:
# 저장된 데이터의 타입 확인
groceries.dtype  # ('O') => object (문자열)
Out[14]:
dtype('O')
In [15]:
# 'apples' 가 groceries 안에 들어있나?
'apples' in groceries
Out[15]:
True
In [16]:
# 'Yes' 가 groceries 안에 들어있나?
'Yes' in groceries.values
Out[16]:
True
In [ ]:
 

판다스 시리즈의 Indexing, Slicing¶

In [18]:
groceries
Out[18]:
eggs       30
apples      6
milk      Yes
bread      No
dtype: object
In [19]:
groceries[0]
Out[19]:
30
In [20]:
groceries['eggs']
Out[20]:
30
In [21]:
groceries[-1]
Out[21]:
'No'
In [22]:
groceries['bread']
Out[22]:
'No'
In [23]:
groceries[ ['eggs', 'bread'] ]
Out[23]:
eggs     30
bread    No
dtype: object
In [24]:
groceries['apples' : 'bread']  # index 이름으로 억세싱할때는 끝부분에 +1 하지 않는다
Out[24]:
apples      6
milk      Yes
bread      No
dtype: object
In [25]:
groceries[1: ]
Out[25]:
apples      6
milk      Yes
bread      No
dtype: object
In [26]:
groceries[ : 'milk']
Out[26]:
eggs       30
apples      6
milk      Yes
dtype: object

판다스 시리즈의 산수연산¶

In [27]:
index = ['apples', 'oranges', 'bananas']
data = [10, 6, 3,]
In [28]:
fruits = pd.Series(data= data, index= index)
In [29]:
fruits
Out[29]:
apples     10
oranges     6
bananas     3
dtype: int64
In [30]:
# 전체 5개씩 증가되었다.
fruits = fruits + 5
In [31]:
fruits
Out[31]:
apples     15
oranges    11
bananas     8
dtype: int64
In [32]:
# 오렌지가 2개 팔렸다
fruits['oranges'] = fruits['oranges'] - 2
In [33]:
fruits
Out[33]:
apples     15
oranges     9
bananas     8
dtype: int64
In [34]:
# 사과랑 바나나가 3개씩 팔렸다
fruits[ ['apples', 'bananas'] ] = fruits[ ['apples', 'bananas'] ] - 3
In [35]:
fruits
Out[35]:
apples     12
oranges     9
bananas     5
dtype: int64
In [36]:
# 불리언 인덱싱
fruits[fruits > 7]
Out[36]:
apples     12
oranges     9
dtype: int64
In [ ]:
 

Pandas Dataframe¶

판다스의 2차원 데이터 처리는 데이터프레임으로 한다.
데이터 분석에서는 csv 파일을 데이터프레임으로 읽어와서 작업한다.

In [37]:
import pandas as pd

# We create a dictionary of Pandas Series 
items = {'Bob' : pd.Series(data = [245, 25, 55], index = ['bike', 'pants', 'watch']),
         'Alice' : pd.Series(data = [40, 110, 500, 45], index = ['book', 'glasses', 'bike', 'pants'])}
In [38]:
# 데이터프레임 만들기
df = pd.DataFrame(data= items)
In [39]:
df
Out[39]:
Bob Alice
bike 245.0 500.0
book NaN 40.0
glasses NaN 110.0
pants 25.0 45.0
watch 55.0 NaN
  • 왼쪽의 행부분의 진한 글씨 : index
  • 위쪽의 열부분의 진한 글씨 : column
  • 안쪽에 있는 데이터 : values
  • NaN은 해당 항목에 값이 없음을 뜻한다 (Not a Number)
In [40]:
df.index
Out[40]:
Index(['bike', 'book', 'glasses', 'pants', 'watch'], dtype='object')
In [41]:
df.columns
Out[41]:
Index(['Bob', 'Alice'], dtype='object')
In [42]:
df.values
Out[42]:
array([[245., 500.],
       [ nan,  40.],
       [ nan, 110.],
       [ 25.,  45.],
       [ 55.,  nan]])
In [43]:
df.shape
Out[43]:
(5, 2)
In [44]:
df.ndim
Out[44]:
2
In [45]:
df.size
Out[45]:
10
In [46]:
df.info()  # info() 함수는 데이터에 대한 전반적인 정보를 알려준다
<class 'pandas.core.frame.DataFrame'>
Index: 5 entries, bike to watch
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   Bob     3 non-null      float64
 1   Alice   4 non-null      float64
dtypes: float64(2)
memory usage: 120.0+ bytes

dataframe을 csv 파일로 저장하기¶

to_csv() 로 데이터프레임을 csv파일로 저장할 수 있다.
괄호 안에는 저장할 경로를 입력한다.

In [49]:
df = pd.DataFrame(data= items)
In [52]:
df
Out[52]:
Bob Alice
bike 245.0 500.0
book NaN 40.0
glasses NaN 110.0
pants 25.0 45.0
watch 55.0 NaN
In [51]:
df.to_csv('test.csv')

csv 파일을 dataframe으로 불러오기¶

read_csv로 csv파일을 불러와 데이터프레임으로 만든다.
괄호 안에는 저장되어 있는 경로를 입력한다.

In [53]:
df2 = pd.read_csv('test.csv')
In [54]:
df2
Out[54]:
Unnamed: 0 Bob Alice
0 bike 245.0 500.0
1 book NaN 40.0
2 glasses NaN 110.0
3 pants 25.0 45.0
4 watch 55.0 NaN

인덱스로 저장되어 있던 열이 분리되어 하나의 컬럼이 되었다.
첫번째 열인 Unnamed: 0를 인덱스로 지정해주고 싶으면
read_csv() 함수를 호출할 때, 파라미터에 index_col=0(위치)나
index_col='Unnamed: 0' 처럼 직접 변수 이름을 지정해주면 된다.

In [55]:
df3 = pd.read_csv('test.csv', index_col = 'Unnamed: 0')
In [56]:
df3
Out[56]:
Bob Alice
bike 245.0 500.0
book NaN 40.0
glasses NaN 110.0
pants 25.0 45.0
watch 55.0 NaN

'Python > Pandas' 카테고리의 다른 글

Pandas 활용(6) - 범주로 묶어 집계하기 groupby, agg  (0) 2022.11.27
Pandas 활용(5) - 결측값(NaN) 처리  (0) 2022.11.27
Pandas 활용(4) - 인덱스명, 컬럼명 변경  (0) 2022.11.27
Pandas 활용(3) - 데이터프레임의 데이터 변경, 추가, 삭제  (0) 2022.11.25
Pandas 활용(2) - 데이터프레임의 Indexing, Slicing  (0) 2022.11.25
    'Python/Pandas' 카테고리의 다른 글
    • Pandas 활용(5) - 결측값(NaN) 처리
    • Pandas 활용(4) - 인덱스명, 컬럼명 변경
    • Pandas 활용(3) - 데이터프레임의 데이터 변경, 추가, 삭제
    • Pandas 활용(2) - 데이터프레임의 Indexing, Slicing
    드레:
    드레:

    티스토리툴바