Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

regexp 및 데이터 유형을 사용하여 여러 DataFrame 열을 선택하는 방법

<시간/>

DataFrame은 행과 열이 있는 데이터베이스나 스프레드시트에 보관된 데이터 세트와 비교할 수 있습니다. DataFrame은 2D 개체입니다.

1D 및 2D 용어가 혼동되십니까?

1D(시리즈)와 2D(DataFrame)의 주요 차이점은 단일 데이터 포인트에 도달하기 위해 무시해야 하는 정보 포인트의 수입니다. 시리즈의 예를 들어 값을 추출하려면 행 인덱스와 같은 참조 포인트 하나만 있으면 됩니다.

테이블(DataFrame)에 비해 하나의 참조점이 데이터 포인트에 도달하기에 충분하지 않고 행 값과 열 값의 교집합이 필요합니다.

아래 스니펫은 csv 파일에서 Pandas DataFrame을 만드는 방법을 보여줍니다.

.read_csv() 메소드는 기본적으로 DataFrame을 생성합니다. 영화를 검색하여 kaggle.com에서 영화 데이터세트를 다운로드할 수 있습니다.

"""스크립트:csv 파일에서 Pandas DataFrame을 만듭니다."""pdmovies_dataset pd read_csv로 pandas 가져오기 "https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")# 1 objecttype(movies_dataset)의 유형을 인쇄합니다.# 2 상위 5개 레코드를 표 형식으로 인쇄합니다.movies_dataset head(5)


<머리><일>
<일>예산
아이디
<일>수익
<일>상태
<일>제목
original_language
original_title
인기
출시_날짜
런타임
투표 평균
vote_count
0
237000000
19995년
ko
아바타
150.437577
2009년 10월 12일
2787965087
162.0
출시
아바타
7.2
11800
1
300000000
285
ko
캐리비안의 해적:세상의 끝에서
139.082615
2007년 5월 19일
961000000
169.0
출시
캐리비안의 해적:세상의 끝에서
6.9
4500
2
245000000
206647
ko
스펙터
107.376788
2015년 10월 26일
880674609
148.0
출시
스펙터
6.3
4466
3
250000000
49026
ko
다크 나이트 라이즈
112.312950
2012년 7월 16일
1084939099
165.0
출시
다크 나이트 라이즈
7.6
9106
4
260000000
49529
ko
존 카터
43.926995
2012년 7월 3일
284139100
132.0
출시
존 카터
6.1
2124

2. 단일 DataFrame 열을 선택합니다. 열 이름을 문자열 또는 목록으로 인덱스 연산자에 전달하면 열 값이 Series 또는 DataFrame으로 반환됩니다.

열 이름이 있는 문자열을 전달하면 시리즈가 출력으로 표시되지만 열 이름이 하나만 있는 목록을 전달하면 DataFrame이 반환됩니다. 예제를 통해 이를 확인할 수 있습니다.

# 시리즈로 데이터 선택 movies_dataset["title"]


0 Avatar1 캐리비안의 해적:세상의 끝에서2 Spectre3 The Dark Knight Rises4 John Carter...4798 El Mariachi4799 Newlyweds4800 Signed, Sealed, Delivered4801 Shanghai Calling4802 My Date with DrewName:title, 길이:4803, dtype:object 사전> 


# 데이터를 DataFrame으로 선택 movies_dataset[["title"]]


<머리><일>
<일>제목
<트><일>...
0
아바타
1
캐리비안의 해적:세상의 끝에서
2
스펙터
3
다크 나이트 라이즈
4
존 카터
...
4798
엘 마리아치
4799
신혼부부
4800
서명, 봉인, 배달
4801
상하이 콜링
4802
드류와 나의 데이트

3. 여러 DataFrame 컬럼 선택하기.

# 여러 DataFrame 열 movies_dataset[["title""runtime","vote_average","vote_count"]]


<머리><일>
<일>제목
<트><일>...
런타임
투표 평균
vote_count
0
아바타
162.0
7.2
11800
1
캐리비안의 해적:세상의 끝에서
169.0
6.9
4500
2
스펙터
148.0
6.3
4466
3
다크 나이트 라이즈
165.0
7.6
9106
4
존 카터
132.0
6.1
2124
...
...
...
...
4798
엘 마리아치
81.0
6.6
238
4799
신혼부부
85.0
5.9
5
4800
서명, 봉인, 배달
120.0
7.0
6
4801
상하이 콜링
98.0
5.7
7
4802
드류와 나의 데이트
90.0
6.3
16

코드 가독성 문제를 피하기 위해 항상 열 이름을 목록으로 유지하는 변수를 정의하고 코드 내에서 여러 열 이름을 지정하는 대신 열 이름을 사용하는 것이 좋습니다.

columns=["title","runtime","vote_average","vote_count"]movies_dataset[열]


<머리><일>
<일>제목
<트><일>...
런타임
투표 평균
vote_count
0
아바타
162.0
7.2
11800
1
캐리비안의 해적:세상의 끝에서
169.0
6.9
4500
2
스펙터
148.0
6.3
4466
3
다크 나이트 라이즈
165.0
7.6
9106
4
존 카터
132.0
6.1
2124
...
...
...
...
4798
엘 마리아치
81.0
6.6
238
4799
신혼부부
85.0
5.9
5
4800
서명, 봉인, 배달
120.0
7.0
6
4801
상하이 콜링
98.0
5.7
7
4802
드류와 나의 데이트
90.0
6.3
16

4. 열 이름별 DataFrame 열.

.filter() 메소드

이 방법은 문자열을 사용하여 열을 검색하고 선택하는 데 매우 편리합니다. 이것은 SQL의 like %% 매개변수와 거의 같은 방식으로 작동합니다. .filter() 메서드는 실제 데이터 값이 아닌 열 이름만 검사하여 열을 선택한다는 것을 기억하십시오.

.filter() 메서드는 선택 작업에 ​​사용할 수 있는 세 가지 매개변수를 지원합니다.

.처럼
.regex
.항목

like 매개변수는 문자열을 사용하여 열 이름의 어딘가에서 이 문자열을 포함하는 열 이름을 찾으려고 시도합니다.


# "title"과 같은 열 이름을 가진 열 선택 movies_dataset.filter(like="title").head(5)


<머리><일>
<일>제목
original_title
0
아바타
아바타
1
캐리비안의 해적:세상의 끝에서
캐리비안의 해적:세상의 끝에서
2
스펙터
스펙터
3
다크 나이트 라이즈
다크 나이트 라이즈
4
존 카터
존 카터

.regex – 정규 표현식을 사용하여 열 이름을 선택하는 보다 유연한 방법

# "t"movies_dataset.filter(regex=t).head()로 끝나는 열 선택


<머리><일>
<일>예산
vote_count
0
237000000
11800
1
300000000
4500
2
245000000
4466
3
250000000
9106
4
260000000
2124

.items – KeyError가 발생하지 않는다는 점을 제외하고 열 이름을 문자열로 전달하거나 목록을 인덱스 연산자로 전달하는 복제

데이터 유형별 DataFrame 열.

.select_dtypes 메소드는 특정 데이터 유형만 필터링하고 사용하려는 경우 열 데이터 유형에서 작동합니다.

다시 말하지만, .select_dtypes 메소드는 포함 또는 제외 매개변수에 여러 데이터 유형(목록 기준) 또는 단일 데이터 유형(문자열)을 허용하고 주어진 데이터 유형의 열이 있는 DataFrame을 반환합니다.

.include 매개변수는 지정된 데이터 유형의 열을 포함하고 .exclude는 지정된 데이터 유형의 열을 무시합니다.

먼저 데이터 유형과 해당 데이터 유형이 포함된 열 수를 살펴보겠습니다.

movies_dataset=pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv"movies_dataset.dtypes.value_counts()


객체 5int64 4float64 3dtype:int64


a) pandas DataFrames에서 정수 데이터 유형 필터링.

movies_dataset select_dtypes(include="int")head(3)


<머리><번째>2
<머리> <머리> <머리>
1
0


비). pandas DataFrames에서 정수 및 부동 소수점 데이터 유형을 선택하십시오.

아래 목록과 같이 여러 데이터 유형을 지정할 수 있습니다.

movies_dataset select_dtypes(include=["int64","float"]).head(3)


<머리><일>
<일>예산
아이디
<일>수익
인기
런타임
투표 평균
vote_count
0
237000000
19995년
150.437577
2787965087
162.0
7.2
11800
1
300000000
285
139.082615
961000000
169.0
6.9
4500
2
245000000
206647
107.376788
880674609
148.0
6.3
4466

c) 모든 숫자 데이터 유형을 원하면 숫자를 지정하십시오.

movies_dataset select_dtypes(include=["숫자"]).head(3)


<머리><일>
<일>예산
아이디
<일>수익
인기
런타임
투표 평균
vote_count
0
237000000
19995년
150.437577
2787965087
162.0
7.2
11800
1
300000000
285
139.082615
961000000
169.0
6.9
4500
2
245000000
206647
107.376788
880674609
148.0
6.3
4466

디). pandas DataFrames에서 특정 데이터 유형을 제외합니다.


movies_dataset select_dtypes(exclude=["객체"]).head(3)


<머리><일>
<일>예산
아이디
<일>수익
인기
런타임
투표 평균
vote_count
0
237000000
19995년
150.437577
2787965087
162.0
7.2
11800
1
300000000
285
139.082615
961000000
169.0
6.9
4500
2
245000000
206647
107.376788
880674609
148.0
6.3
4466


참고 :- 처리할 문자열 데이터 유형이 없으므로 pandas가 이를 Object로 변환하므로 "TypeError:데이터 유형 "string"이 이해되지 않음" 예외가 발생하면 string을 대신 Object로 교체하십시오.