【Pandas】.str.split() 메소드를 사용해, NBA 선수의 이름과 성에 대해 조사했다 no.23

5380 단어 pandas초보자

안녕하세요, 마유미입니다.

Pandas의 기사를 시리즈로 쓰고 있습니다.

이번 기사는, 제23회째가 됩니다.

지난번 에 이어, 이번 기사에서도 Pandas의 DataFrame안의 캐릭터 라인 데이터를 취급하는 방법을 써 가고 싶습니다.

이번 기사에서는, Python에서도 사용하는 split() 메소드를 사용해, NBA 선수의 이름을 성과 이름으로 나누어 그 데이터를 여러가지 분석해 보겠습니다.

그럼 바로 시작하겠습니다.

이번에 사용하는 데이터



NBA 선수 데이터 을 사용하게 합니다.

이 데이터를 read_csv()로 읽으면 아래와 같이 됩니다.


.split() 메서드



우선, .split() 메소드가 어떠한 기능을 가진 메소드인가, w3s의 ls. 작은 m 로부터 정의를 인용했습니다.


인용 소스 : w3s의 ls. 작은 m

파이썬 문자열에 .split()을 사용해 보겠습니다.

공백으로 구분하고 싶으므로 인수에 ""를 전달했습니다.


공백 부분에서 각 문자열이 분할 목록으로 반환되었습니다.

그럼, 이 split() 메소드를 Pandas의 Series 오브젝트에 대해서 사용해 보겠습니다.

.split() 메서드를 Pandas Series 객체에 사용



Pandas의 Series에 대해 Python의 메소드를 사용하기 때문에,
Series.str.split()

와 같이 사이에 '.str'이 필요합니다.
※자세한 것은 마지막 기사에도 쓰고 있습니다.

이번에 사용하는 데이터의 'player_name'이라고 적힌 칼럼을 사용하여 선수의 이름과 성에 대해 알아보겠습니다.

선수의 이름과 성이 공백으로 구분되어 있으므로 split() 메서드를 사용하여 이름과 성을 별도로 검색합시다.

.str.split("") 을 사용하면 실행 결과는 다음과 같습니다.



그런 다음 반환 된 목록에서 인덱스 0 만 검색하고 싶으므로,
.str.get(0)

계속해서 씁니다.



각 값이 몇 개 있는지 계산하고 싶기 때문에
.str.value_counts()

계속합니다.



NBA 선수 중 어떤 이름의 선수가 몇 명 있는지에 대한 데이터를 얻을 수있었습니다.

마찬가지로, NBA 선수의 성에 대해 조사하고 싶을 때는 .split()로 분할한 후, 두 번째 요소를 꺼내고 싶으므로, get() 메소드의 인수를 1로 하면 괜찮습니다.


다만, 외국인의 이름은, 이름의 마지막에 「Jr.」가 들어가거나 미들 네임이 들어가 있는 경우도 있어

First-name , Last-name

되어 있지 않은 곳도 있을지도 모릅니다.

거기서 편리한 것이, str.split()의 파라미터 expand입니다.

.str.split() 매개변수 expand




인용 소스 : Pandas 문서

expand의 기본값은 False이지만 True로 변경하면 DataFrame을 반환합니다.


이렇게 되었습니다.

인덱스 11141의 선수명에는 Jr.가 붙어 있습니다.

또, 이 돌려주어진 DataFrame 를 새롭게 DataFrame 의 칼럼명에 대입해, 이 데이터를 오리지날의 DataFrame 의 우단에 붙일 수도 있습니다



다만, 이대로라면 마지막 칼럼 「blank」가 불필요한 생각이 듭니다.



.str.split("", expand=True)로 Series를 공백으로 분할한 DataFrame으로 했을 때, 선수의 이름에 최대 3의 공백이 있었으므로, 4개의 칼럼을 만들지 않을 수 없었습니다. (.split()로 4개로 분할되면, 4개의 새로운 칼럼명을 만들지 않으면 에러가 나온다)

.str.split 매개 변수 n 사용법





위와 같은 경우, 3개의 공백 부분으로 단락지어 DataFrame 으로 하는 것이 아니라, 최초의 2개의 공백만으로 단락짓고 싶네요.

그러한 경우 .str.split() 의 파라미터 n= 의 인수에 단락짓고 싶은 수를 쓰면 괜찮습니다.

좋은 웹페이지 즐겨찾기