반응형
시리즈 문자열 검색
- 설명 전 자료만들기
import pandas as pd
import numpy as np
sr = pd.Series(['홍길동', '이순신', '김철수', '김순이', '이홍김'])
sr.index = ['aa','bb','cc','dd','ee']
sr
-> aa 홍길동
bb 이순신
cc 김철수
dd 김순이
ee 이홍김
dtype: object
# 원하는 자료 자료찾기
sr[sr=='이순신']
->
bb 이순신
dtype: object
str accessor
# series에서 처음값 찾기
sr[0]
-> '홍길동'
# series에서 각 값들의처음 값들을 출력
sr.str[0]
-> aa 홍
bb 이
cc 김
dd 김
ee 이
dtype: object
- str.contains - 포함된 결과출력할때사용
응용 : 정규표현식과 결합해서 사용
# 김 이라는 문자가 포함된 결과출력
sr[sr.str.contains('김')]
->
cc 김철수
dd 김순이
ee 이홍김
dtype: object
# 김으로 시작하는 문자 포함 결과출력
sr[sr.str.contains('^김')]
->
cc 김철수
dd 김순이
dtype: object
# 김으로 끝나는 문자 포함 결과출력
sr[sr.str.contains('김$')]
->
ee 이홍김
dtype: object
# 김이 포함되고 철 or 순이 포함된 문자 결과 출력
sr[sr.str.contains('김[철순]')]
->
cc 김철수
dd 김순이
dtype: object
# 순신 이나 철수 가 포함된 문자 출력
sr[sr.str.contains('순신|철수')]
->
bb 이순신
cc 김철수
dtype: object
sr
->
aa 홍길동
bb 이순신
cc 김철수
dd 김순이
ee 이홍김
dtype: object
# 김을 황으로 치환
sr.str.replace('김','황')
->
aa 홍길동
bb 이순신
cc 황철수
dd 황순이
ee 이홍황
dtype: object
# 김으로 시작하는 문자를 황으로 치환
sr.str.replace('^김','황', regex =True)
->
aa 홍길동
bb 이순신
cc 황철수
dd 황순이
ee 이홍김
dtype: object
시리즈 통계
- 자료 만들기
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# font 설정
matplotlib.rcParams ['font.family']='Malgun Gothic'
matplotlib.rcParams ['axes.unicode_minus']= False
data = [10,20,30,40,50]
sr = pd.Series(data, index = ['a','b','c','d','e'], name = 'kor')
sr
-> a 10
b 20
c 30
d 40
e 50
Name: kor, dtype: int64
통계함수 및 기타함수
max : 최대값
min : 최소값
idxmax : 최대값의 index
idxmin : 최소값의 index
head : 상단 항목 출력
tail : 하단 항목 출력
nlargest : 정렬 후 최대값 n개 출력
nsmallest: 정렬 후 최소값 n개 출력
sum 합
mean : 평균
median : 중위값
quantile : 분위수출력
std : 표준편차
var : 분산
unique: 항목출
value_counts: 항목별 개수출력
pd.cut : 구간 나누기(카테고리 만들 때 사용
apply : 행이나 열별로 원하는 함수 사용하고 싶을 때 사
items : index,values 쌍으로 값출력
# 예시
sr.max()
-> 50
sr.min()
-> 10
sr.idxmax()
-> 'e'
sr.idxmin()
-> 'a'
sr[sr<=45].max()
-> 40
sr.head(2)
-> d 40
e 50
sr.nlargest(3)
-> e 50
d 40
c 30
# 동일 값이 있다면 같이 출력
sr['b'] = 30
sr.nlargest(3,keep = 'all')
-> e 50
d 40
b 30
sr.nsmallest(2)
->
a 10
b 30
sr.sum()
-> 150
sr.mean()
-> 30.0
sr.median()
-> 30.0
sr.quantile([0.25,0.5,0.75])
-> 0.25 20.0
0.50 30.0
0.75 40.0
sr.std()
-> 15.811388300841896
sr.unique()
-> array([10, 30, 40, 50], dtype=int64)
sr.value_counts()
-> 30 2
40 1
10 1
50 1
def fn(v):
print("v=",v)
if v<30:
return v+1
else:
return v+2
sr.apply(fn)
-> v= 10
v= 30
v= 30
v= 40
v= 50
a 11
b 32
c 32
d 42
e 52
pd.cut(sr,[0,20,40,90])
-> a (0, 20]
b (20, 40]
c (20, 40]
d (20, 40]
e (40, 90]
Name: kor, dtype: category
Categories (3, interval[int64]): [(0, 20] < (20, 40] < (40, 90]]
pd.cut(sr,[0,20,40,90],labels =['C','B','A'])
-> a C
b B
c B
d B
e A
Name: kor, dtype: category
Categories (3, object): ['C' < 'B' < 'A']
pd.cut(sr,[0,20,40,90]).value_counts()
->(20, 40] 3
(0, 20] 1
(40, 90] 1
Name: kor, dtype: int64
for i,v in sr.items():
print(i,v)
-> a 10
b 30
c 30
d 40
e 50
반응형
'python' 카테고리의 다른 글
Python DataFrame (기초) (0) | 2023.04.16 |
---|