All About Pandas

Jacob Kim·2023년 12월 27일
0

Datascience Dictionary

목록 보기
1/14
post-thumbnail

0. Pandas 특징

1)부동 소수점이 아닌 데이터 뿐만 아니라 부동 소수점 데이터에서도 결측 데이터(NaN으로 표시)를 쉽게 처리
2) 크기 변이성(Size mutuability) : DataFrame 및 고차원 객체에서 열을 삽입 및 삭제 가능
3) 자동 및 명시적(explicit) 데이터 정렬 : 객체를 라벨 집합에 명시적으로 정렬하거나, 사용자가 라벨을 무시하고 Series, DataFrame 등의 계산에서 자동으로 데이터 조정이 가능하다.
4) 데이터 세트에서 집계 및 변환을 위한 분할(split), 적용(apply), 결합(combine) 작업을 수행할 수 있는 강력하고 유연한 groupby 함수를 제공한다.
5) 누락된 데이터 또는 다른 pythonNumpy 데이터 구조에서 서로 다른 인덱싱 데이터를 DataFrame 개체로 쉽게 변화
6) 대용량 데이터 세트의 지능형 라벨 기반 슬라이싱, 고급 인덱싱 및 부분 집합 구하기가 가능하다.
7) 직관적인 데이터 세트 병합 및 결합
8) 데이터 세트의 유연한 재구성 및 피벗
9) 축의 계층적 라벨링(눈금당 여러 개의 라벨을 가질 수 있다)
10) 플랫 파일(CSV 및 구분), Excel 파일, 데이터베이스 로딩 및 초고속 HDF5 형식의 데이터 저장/로드에 사용되는 강력한 IO 도구
11) 시계열 특정 기능 : 날짜 범위 생성 및 주파수 변환, 무빙 윈도우(moving window) 통계, 날짜 이동 및 지연

import numpy as np
import pandas as pd
pd.__version__ #1.5.3

1. Pandas 객체

1.1. Series 객체

s = pd.Series([0, 0.25, 0.5, 0.75, 1.0])
s
#	0    0.00
#	1    0.25
#	2    0.50
#	3    0.75
#	4    1.00
#	dtype: float64
s.values
# array([0.  , 0.25, 0.5 , 0.75, 1.  ])
s.index
# RangeIndex(start=0, stop=5, step=1)
s[1]
# 0.25
s[1:4]
#  1    0.25
#  2    0.50
#  3    0.75
#  dtype: float64
s = pd.Series([0, 0.25, 0.5, 0.75, 1.0],
              index=['a', 'b', 'c', 'd', 'e'])
s
#  a    0.00
#  b    0.25
#  c    0.50
#  d    0.75
#  e    1.00
#  bdtype: float64
s['c']
# 0.5
s[['c', 'd', 'e']]
# c    0.50
# d    0.75
# e    1.00
# dtype: float64
'b' in s
# True
s = pd.Series([0, 0.25, 0.5, 0.75, 1.0],
              index = [2,4,6,8,10])
s
# 2     0.00
# 4     0.25
# 6     0.50
# 8     0.75
# 10    1.00
# dtype: float64
s[4] # 0.25
s[2:]
# 6     0.50
# 8     0.75
# 10    1.00
# dtype: float64
s.unique() 
# array([0.  , 0.25, 0.5 , 0.75, 1.  ])
s.value_counts()
# 0.00    1
# 0.25    1
# 0.50    1
# 0.75    1
# 1.00    1
# dtype: int64
s.isin([0.25, 0.75])
# 2     False
# 4      True
# 6     False
# 8      True
# 10    False
# dtype: bool
pop_tuple = {'서울특별시': 9720391,
             '부산광역시': 349506,
             '인천광역시': 2390191,
             '대구광역시': 1289435,
             '대전광역시': 12345623,
             '광주광역시': 12354352}
population = pd.Series(pop_tuple)
population
# 서울특별시     9720391
# 부산광역시      349506
# 인천광역시     2390191
# 대구광역시     1289435
# 대전광역시    12345623
# 광주광역시    12354352
# dtype: int64
population['서울특별시']
# 9720391
population['서울특별시': '인천광역시']
# 서울특별시    9720391
# 부산광역시     349506
# 인천광역시    2390191
# dtype: int64

1.2. DataFrame 객체

pd.DataFrame([{'A':2, 'B':3, 'D':3}, {'A':4, 'B':5, 'C':7}])
pd.DataFrame(np.random.rand(5,5),
             columns=['A', 'B', 'C', 'D', 'E'],
             index = [1,2,3,4,5])
male_tuple = {'서울특별시': 23524123,
             '부산광역시': 3493242,
             '인천광역시': 23923561,
             '대구광역시': 128941235,
             '대전광역시': 12345623453,
             '광주광역시': 12354332452}
male = pd.Series(male_tuple)
male
female_tuple = {'서울특별시': 3421204,
             '부산광역시': 342315442,
             '인천광역시': 2334511,
             '대구광역시': 124245,
             '대전광역시': 4902133,
             '광주광역시': 1223152}
female = pd.Series(male_tuple)
female
korea_df = pd.DataFrame({'인구수': population,
                         '남자인구수': male,
                         '여자인구수': female})
korea_d
korea_df.index
# Index(['서울특별시', '부산광역시', '인천광역시', '대구광역시', '대전광역시', '광주광역시'], dtype='object')
korea_df.columns
# Index(['인구수', '남자인구수', '여자인구수'], dtype='object')
korea_df['여자인구수']
# 서울특별시       23524123
# 부산광역시        3493242
# 인천광역시       23923561
# 대구광역시      128941235
# 대전광역시    12345623453
# 광주광역시    12354332452
# Name: 여자인구수, dtype: int64
korea_df['서울특별시':'인천광역시']

1.2. Index 객체

idx = pd.Index([2,4,6,8,10])
idx
#Int64Index([2, 4, 6, 8, 10], dtype='int64')
idx[1]
# 4
idx[1:2:2]
# Int64Index([4], dtype='int64')
idx[-1::]
# Int64Index([10], dtype='int64')
idx[::2]
# Int64Index([2, 6, 10], dtype='int64')
print(idx)
print(idx.size)
print(idx.shape)
print(idx.dtype)
print(idx.ndim)
# Int64Index([2, 4, 6, 8, 10], dtype='int64')
# 5
# (5,)
# int64
# 1

1.2.1. Index 연산

idx1 = pd.Index([1,2,4,6,8])
idx2 = pd.Index([2,4,5,6,7])
print(idx1.append(idx2))
print(idx1.difference(idx2))
print(idx1 - idx2)
print(idx1.intersection(idx2))
print(idx1 & idx2)
print(idx1.union(idx2))
print(idx1 | idx2)
print(idx1.delete(0))
print(idx1.drop(2))
print(idx1 ^ idx2)
#Int64Index([1, 2, 4, 6, 8, 2, 4, 5, 6, 7], dtype='int64')
#Int64Index([1, 8], dtype='int64')
#Int64Index([-1, -2, -1, 0, 1], dtype='int64')
#Int64Index([2, 4, 6], dtype='int64')
#Int64Index([2, 4, 6], dtype='int64')
#Int64Index([1, 2, 4, 5, 6, 7, 8], dtype='int64')
#Int64Index([1, 2, 4, 5, 6, 7, 8], dtype='int64')
#Int64Index([2, 4, 6, 8], dtype='int64')
#Int64Index([1, 4, 6, 8], dtype='int64')
#Int64Index([1, 5, 7, 8], dtype='int64')
#<ipython-input-59-8c125067fd7d>:7: FutureWarning: Index.__and__ operating as a set operation is deprecated, in the future this #will be a logical operation matching Series.__and__.  Use index.intersection(other) instead.
#  print(idx1 & idx2)
#<ipython-input-59-8c125067fd7d>:9: FutureWarning: Index.__or__ operating as a set operation is deprecated, in the future this #will be a logical operation matching Series.__or__.  Use index.union(other) instead.
#  print(idx1 | idx2)
#<ipython-input-59-8c125067fd7d>:12: FutureWarning: Index.__xor__ operating as a set operation is deprecated, in the future #this will be a logical operation matching Series.__xor__.  Use index.symmetric_difference(other) instead.
#  print(idx1 ^ idx2)

Reference
: 이수안컴퓨터연구소 - 실습자료
: 이수안컴퓨터연구소 - 강의내용(Pandas 한번에 끝내기 - 데이터 과학의 패키지, 데이터 처리, 연산, 집계)

profile
AI, Information and Communication, Electronics, Computer Science, Bio, Algorithms

0개의 댓글