Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- kt 에이블스쿨 6기 미니 프로젝트
- 앙상블
- 파이썬
- SQLD
- kt 에이블스쿨 기자단
- ElasticSearch
- kt 에이블스쿨 6기 빅프로젝트
- 케이티 에이블스쿨 6기 ai
- 케이티 에이블스쿨 6기 java
- kt aivle school
- 알고리즘
- 에이블 기자단
- 구현
- 티스토리챌린지
- 케이티 에이블스쿨 6기 후기
- 케이티 에이블스쿨 6기
- KT AIVLE
- 케이티 에이블스쿨 기자단
- kt 에이블스쿨 6기 ai
- 케이티 에이블스쿨
- 데이터 프레임
- 머신러닝
- 엘라스틱서치
- kt 에이블스쿨 6기
- 판다스
- KT 에이블스쿨
- 백준
- 네트워크
- 오블완
- 프로그래머스
Archives
- Today
- Total
미식가의 개발 일기
[판다스] 시리즈(Series) 조작 본문
시리즈 생성
import pandas as pd
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
series = pd.Series(data, index=index, name='series')
series
인덱스 변경
new_index = ['o', 'p', 'q', 'r', 's']
series.index = new_index
인덱싱(indexing)
-> 슬라이싱도 가능
- 대괄호
# 인덱스가 a인 데이터 추출
a = series['a']
# 3번째 인덱스의 값을 추출
b = series[2]
print(a) # 10
print(b) # 30
- 라벨 기반
a = series.loc['a']
a # 10
- 정수 기반
b = series.iloc[2]
b # 30
필터링(filtering)
- 값이 30 이상인 값을 추출
filtered = series[series >= 30]
filtered
c 30
d 40
e 50
Name: my_series, dtype: int64
정렬(sort)
- 값 기준 정렬
series_sorted = series.sort_values()
series_sorted
- 인덱스 기준 정렬
series_sorted = series.sort_index()
# 내림차순 정렬은 ()안에 ascending=False 추가
series_sorted
순위(rank)
series_rank = series.rank(ascending=False)
series_rank
a 7.0
b 8.0
c 5.0
d 4.0
e 3.0
f 6.0
g 2.0
h 1.0
Name: my_series, dtype: float64
변환(apply)
시리즈 내의 각 요소에 함수를 적용한 결과를 새로운 시리즈로 반환, 데이터 프레임도 가능
import pandas as pd
data = [1, 2, 3, 4, 5]
series = pd.Series(data)
def f(x):
if x % 2 == 0:
result = 0
else:
result = 1
return result
res = series.apply(f)
res
0 1
1 0
2 1
3 0
4 1
dtype: int64
- Lambda 함수 버전
res = series.apply(lambda x: 0 if x % 2 == 0 else 1)
res
대체(replace)
data = ['minji', 'hojun', 'kobi', 'choco', 'icecream']
series = pd.Series(data)
# 'choco'를 'cake'로 대체
res = series.replace('choco', 'cake')
res
- 한 번에 여러 개의 값을 대체할 때
replce = {'choco': 'cake', 'minji': 'mingd'}
res = series.replace(replace)
res
- 정규 표현식 이용
# i로 시작하는 값을 koko로 변경
res = series.replace('^i', 'koko', regex=True)
res
나누기(cut)
data = [10, 20, 30, 40, 50]
series = pd.Series(data)
# 구간을 정의
bins = [0, 20, 40, 60]
# 라벨을 만들어줍니다.
labels = ['Low', 'Mid', 'High']
# cut 함수를 사용하여 값을 나누기
res = pd.cut(series, bins, labels=labels)
res
0 Low
1 Low
2 Mid
3 Mid
4 High
dtype: category
Categories (3, object): ['Low' < 'Mid' < 'High']
합치기(concat)
# axis=1 -> 수평으로 연결
pd.concat([series1, series2], axis=1)
반응형
'BigData' 카테고리의 다른 글
| 데이터 시각화(matplotlib, seaborn) (1) | 2024.07.19 |
|---|---|
| [판다스] 피벗 테이블 (1) | 2024.07.12 |
| [판다스] 데이터 프레임(DataFrame) 결합 (1) | 2024.07.12 |
| [판다스] 데이터 프레임(DataFrame) 조작 (1) | 2024.07.12 |
| 판다스란? (Series, DataFrame) (1) | 2024.07.11 |