>  기사  >  백엔드 개발  >  Python에서 pandas.DataFrame(생성, 색인, 추가 및 삭제)의 간단한 작업 방법 소개

Python에서 pandas.DataFrame(생성, 색인, 추가 및 삭제)의 간단한 작업 방법 소개

高洛峰
高洛峰원래의
2018-05-29 15:23:0529301검색

이 글에서는 생성, 인덱싱, 추가, 삭제에 대한 관련 정보를 포함하여 Python에서 pandas.DataFrame의 간단한 작업 방법(생성, 인덱싱, 추가 및 삭제)을 소개합니다. 참고로 아래를 살펴보겠습니다.

머리말

최근 인터넷에서 pandas.DataFrame에 대한 조작방법을 많이 찾아봤는데, 다 기본조작이지만, 이러한 작업의 조합 DataFrame을 올바르게 작동하려면 아직 시간이 걸리는 것 같고, 버그를 조정하는 데도 오랜 시간이 걸렸습니다. 나는 당신과 나와 다른 사람들의 편의를 위해 여기에 몇 가지 요약을 작성하겠습니다. 관심 있는 친구들은 와서 구경해 보세요.

1. DataFrame을 생성하는 간단한 작업:

1. 사전을 기반으로 생성:

In [1]: import pandas as pd
In [3]: aa={'one':[1,2,3],'two':[2,3,4],'three':[3,4,5]}
In [4]: bb=pd.DataFrame(aa)
In [5]: bb
Out[5]: 
 one three two
0 1 3 2
1 2 4 3
2 3 5 4`

사전의 키는 DataFrame의 열이지만 인덱스 값이 없으므로 직접 설정해야 합니다. 설정하지 않으면 기본값은 0부터 계산됩니다.

bb=pd.DataFrame(aa,index=['first','second','third'])
bb
Out[7]: 
 one three two
first 1 3 2
second 2 4 3
third 3 5 4

2. 다차원 배열에서 생성

import numpy as np
In [9]: del aa
In [10]: aa=np.array([[1,2,3],[4,5,6],[7,8,9]])
In [11]: aa
Out[11]: 
array([[1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]])
In [12]: bb=pd.DataFrame(aa)
In [13]: bb
Out[13]: 
 0 1 2
0 1 2 3
1 4 5 6
2 7 8 9

다차원 배열에서 생성하려면 DataFrame에 열과 인덱스를 할당해야 합니다. 그렇지 않으면 그것은 추악한 기본값이 될 것입니다.

bb=pd.DataFrame(aa,index=[22,33,44],columns=['one','two','three'])
In [15]: bb
Out[15]: 
 one two three
22 1 2 3
33 4 5 6
44 7 8 9

3. 다른 DataFrame을 사용하여

bb=pd.DataFrame(aa,index=[22,33,44],columns=['one','two','three'])
bb
Out[15]: 
 one two three
22 1 2 3
33 4 5 6
44 7 8 9
cc=bb[['one','three']].copy()
Cc
Out[17]: 
 one three
22 1 3
33 4 6
44 7 9

를 생성합니다. 여기의 복사본은 cc의 값을 변경하면 bb의 값을 변경할 수 없습니다.

cc['three'][22]=5
bb
Out[19]: 
 one two three
22 1 2 3
33 4 5 6
44 7 8 9

cc
Out[20]: 
 one three
22 1 5
33 4 6
44 7 9

2. DataFrame의 인덱스 작업:

DataFrame의 경우 인덱스 작업이 가장 번거롭고 오류가 발생하기 쉽습니다.

1. 하나 이상의 열을 인덱싱하는 것은 비교적 간단합니다.

bb['one']
Out[21]: 
22 1
33 4
44 7
Name: one, dtype: int32

열 이름이 여러 개인 경우 입력 열 이름을 목록에 저장해야 합니다. 변수입니다. 그렇지 않으면 오류가 보고됩니다.

bb[['one','three']]
Out[29]: 
 one three
22 1 3
33 4 6
44 7 9

2. 하나의 레코드 또는 여러 레코드 인덱스:

bb[1:3]
Out[27]: 
 one two three
33 4 5 6
44 7 8 9
bb[:1]
Out[28]: 
 one two three
22 1 2 3

여기서 콜론이 필수라는 점에 유의하세요. 그렇지 않으면 인덱스 열이 됩니다. .

3. 특정 열의 특정 변수 레코드를 색인화하는 것은 오랫동안 저를 괴롭혔습니다.

첫 번째 유형

bb.loc[[22,33]][['one','three']]
Out[30]: 
 one three
22 1 3
33 4 6

는 여기서 값을 변경할 수 없습니다. 값을 읽을 수만 있고 쓸 수는 없습니다. loc() 함수와 관련이 있을 수 있습니다.

bb.loc[[22,33]][['one','three']]=[[2,2],[3,6]]
In [32]: bb
Out[32]: 
 one two three
22 1 2 3
33 4 5 6
44 7 8 9

두 번째 유형:

bb[['one','three']][:2]
Out[33]: 
 one three
22 1 3
33 4 6

값을 변경하려는 경우 오류가 보고됩니다.

In [34]: bb[['one','three']][:2]=[[2,2],[2,2]]
-c:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
F:\Anaconda\lib\site-packages\pandas\core\frame.py:1999: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
 return self._setitem_slice(indexer, value)

세 번째 유형: 데이터 값을 변경할 수 있습니다! ! !

Iloc은 인덱스와 열을 계산하지 않고 데이터의 행과 열 수에 따라 인덱스를 생성합니다

bb.iloc[2:3,2:3]
Out[36]: 
 three
44 9

bb.iloc[1:3,1:3]
Out[37]: 
 two three
33 5 6
44 8 9
bb.iloc[0,0]
Out[38]: 1

다음은 증명입니다.

bb.iloc[0:4,0:2]=[[9,9],[9,9],[9,9]]
In [45]: bb
Out[45]: 
 one two three
22 9 9 3
33 9 9 6
44 9 9 9

3. 원본에서 DataFrame에 새 열 또는 여러 열을 만듭니다.

1. 아무것도 사용하지 않고 여러 열만 만들 수 있습니다. 개인 테스트가 작동하지 않습니다:

bb['new']=[2,3,4]
bb
Out[51]: 
 one two three new
22 9 9 3 2
33 9 9 6 3
44 9 9 9 4
bb[['new','new2']]=[[2,3,4],[5,3,7]]
KeyError: "['new' 'new2'] not in index"
할당된 목록은 기본적으로 주어진 인덱스 값의 순서로 할당되지만 일반적으로 더 고급 할당을 원할 경우 해당 인덱스를 할당해야 합니다. 다음을 보세요.

2. 사전을 사용하여 인덱스별로 여러 열에 값을 할당합니다.

aa={33:[234,44,55],44:[657,77,77],22:[33,55,457]}
In [58]: bb=bb.join(pd.DataFrame(aa.values(),columns=['hi','hello','ok'],index=aa.keys()))
In [59]: bb
Out[59]: 
 one two three new hi hello ok
22 9 9 3 2 33 55 457
33 9 9 6 3 234 44 55
44 9 9 9 4 657 77 77
여기서 aa는 레코드에 해당하는 중첩된 사전 및 목록입니다. 키를 일반적인 기본 열 이름 대신 인덱스 이름으로 사용합니다. 여러 열을 인덱스별로 일치시키는 목적이 달성되었습니다.

의 저장 공간이 혼란스럽기 때문에 인덱스에 값을 할당하지 않고

을 사용하면 기록에 혼란이 발생할 수 있다는 점은 주목할 만합니다. dict()dict()

4. 여러 열 또는 레코드 삭제:

열 삭제

bb.drop(['new','hi'],axis=1)
Out[60]: 
 one two three hello ok
22 9 9 3 55 457
33 9 9 6 44 55
44 9 9 9 77 77

레코드 삭제

bb.drop([22,33],axis=0)
Out[61]: 
 one two three new hi hello ok
44 9 9 9 4 657 77 77
Python의 pandas.DataFrame에서 행과 열을 합산하고 새 행과 열을 추가하는 방법에 대한 기사를 공유해 보세요.

DataFrame에는 아직 다루지 않은 기능이 많이 있습니다. 앞으로는 공식 웹사이트에서 API를 읽어본 후 계속 공유하겠습니다.

관련 기사:

행과 열을 합산하고 새 행과 열을 추가하는 Python의 pandas.DataFrame 정보 샘플 코드

자세히 Python에서 특정 행을 제외하는 pandas.DataFrame 메서드의 샘플 코드 설명

위 내용은 Python에서 pandas.DataFrame(생성, 색인, 추가 및 삭제)의 간단한 작업 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.