이 글에서는 생성, 인덱싱, 추가, 삭제에 대한 관련 정보를 포함하여 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"
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
을 사용하면 기록에 혼란이 발생할 수 있다는 점은 주목할 만합니다. 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
DataFrame에는 아직 다루지 않은 기능이 많이 있습니다. 앞으로는 공식 웹사이트에서 API를 읽어본 후 계속 공유하겠습니다. 관련 기사: 위 내용은 Python에서 pandas.DataFrame(생성, 색인, 추가 및 삭제)의 간단한 작업 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!bb.drop([22,33],axis=0)
Out[61]:
one two three new hi hello ok
44 9 9 9 4 657 77 77