pandas 라 이브 러 리 로 Dataframe 의 기본 동작 실현

13587 단어
다음으로 이동:https://www.jianshu.com/p/682c24aef525
어떻게 list 의 빈 문 자 를 삭제 합 니까?가장 쉬 운 방법: newlist = [ x for x in li if x != '' ]
이 부분 은 주로 pandas 에서 앞의 두 가지 데이터 구 조 를 바탕 으로 하 는 기본 적 인 조작 을 배운다.
  DataFrame     a    :    
       a  b  c
one    4  1  1
two    6  2  0
three  6  1  6

1. 데이터 보기 (대상 을 보 는 방법 은 Series 에 도 적용)
1. DataFrame 앞 xx 줄 또는 뒤 xx 줄 a = DataFrame (data) 보기;a. head (6) 는 앞의 6 줄 데 이 터 를 표시 하고 head () 에 인자 가 없 으 면 모든 데 이 터 를 표시 합 니 다.a. tail (6) 은 표시 후 6 줄 의 데 이 터 를 표시 합 니 다. tail () 에 인자 가 없 으 면 모든 데 이 터 를 표시 합 니 다.
2. DataFrame 의 index, columns 및 valuesa. index 보기;a.columns ; a. values 면 됩 니 다.
3. describe () 함 수 는 데이터 에 대한 빠 른 통 계 를 a. describe () 로 집계 하여 각 열의 데 이 터 를 통계 하 는데 계수, 평균치, std, 각 분 위수 등 을 포함한다.
4. 데이터 변환 a. T
5. 축 정렬 a. sortindex(axis=1,ascending=False);그 중에서 axis = 1 은 모든 columns 를 정렬 하고 아래 의 수도 이에 따라 이동 한 다 는 것 을 나타 낸다.뒤의 ascending = False 는 내림차 순 으로 배열 하고 매개 변수 가 부족 할 때 기본 오름차 순 을 표시 합 니 다.
6. DataFrame 의 값 정렬 a. sort (columns = 'x') 즉 a 의 x 열 을 작은 것 부터 큰 것 까지 정렬 합 니 다.주 의 는 단지 x 열 일 뿐 이 며, 위의 축 에 따라 정렬 할 때 모든 columns 를 조작 합 니 다.
2. 대상 선택
1. 특정한 열 과 줄 의 데이터 a ['x'] 를 선택 하면 columns 가 x 인 열 로 되 돌아 갑 니 다. 이런 방식 은 한 번 에 한 열 만 되 돌아 갈 수 있 습 니 다.a. x 는 a [x] 와 뜻 이 같다.
줄 데 이 터 를 가 져 오고 슬라이스 [] 를 통 해 a [0: 3] 를 선택 하면 앞의 세 줄 의 데 이 터 를 되 돌려 줍 니 다.
2. loc 는 탭 을 통 해 데이터 a. loc [one] 를 선택 하면 선택 행위 'one' 의 줄 을 기본적으로 표시 합 니 다.
a. loc [:, ['a', 'b'] 는 모든 줄 과 columns 를 a, b 의 열 로 선택 하 는 것 을 나타 낸다.
a. loc ['one', 'to'], ['a', 'b'] 는 'one' 과 'to' 라 는 두 줄 과 columns 를 a, b 의 열 로 선택 하 는 것 을 나타 낸다.
a. loc ['one', 'a'] 는 a. loc ['one'], ['a'] 와 같은 역할 을 하지만 전 자 는 해당 하 는 값 만 표시 하고 후 자 는 해당 하 는 줄 과 열 라벨 을 표시 합 니 다.
3. iloc 는 직접 위 치 를 통 해 데 이 터 를 선택 합 니 다. 이것 은 탭 을 통 해 a. iloc [1: 2, 1: 2] 와 유사 한 데 이 터 를 선택 하면 첫 번 째 줄 의 첫 번 째 열 데 이 터 를 표시 합 니 다.(슬라이스 뒤의 값 을 찾 을 수 없습니다)
a. iloc [1: 2] 즉, 뒤에 열 값 이 없다 는 것 을 표시 할 때 기본적으로 줄 위 치 를 1 로 선택 한 데이터 입 니 다.
a. iloc [0, 2], [1, 2] 는 줄 의 위 치 를 자 유 롭 게 선택 하고 열 위치 와 대응 하 는 데 이 터 를 선택 할 수 있다.
4. 조건 을 사용 하여 단독 열 을 선택 하여 데이터 a [a. c > 0 을 선택 하면 c 열 중 0 이상 의 데 이 터 를 선택 합 니 다.
where 를 사용 하여 데이터 a [a > 0 표를 선택 하고 a 중 0 이상 의 데 이 터 를 직접 선택 합 니 다.
isin () 을 사용 하여 특정 열 에 특정 값 을 포함 하 는 줄 a1 = a. copy () a1 [41 [one]. isin ([2 ',' 3 ')] 표를 선택 하여 만족 조건 을 표시 합 니 다. 열 원 의 값 은' 2 ',' 3 '의 모든 줄 을 포함 합 니 다.
3. 설정 값 (할당)
할당 작업 은 상기 선택 작업 을 바탕 으로 직접 할당 하면 됩 니 다.예 a. loc [:, [a ',' c '] = 9 a 와 c 열의 모든 줄 의 값 을 9a. iloc [:, [1, 3] = 9 로 설정 하 는 것 도 a 와 c 열의 모든 줄 의 값 을 9 로 설정 하 는 것 을 나타 낸다.
또한 조건 으로 a [a > 0] = - a 는 a 중의 모든 0 이상 의 수 를 마이너스 로 바 꿀 수 있 음 을 나타 낸다.
4. 결함 처리
pandas 에 서 는 부족 한 값 대신 np. nan 을 사용 합 니 다. 이 값 들 은 기본적으로 계산 에 포함 되 지 않 습 니 다.
1. reindex () 방법 은 지정 한 축의 색인 을 변경 / 증가 / 삭제 하 는 데 사 용 됩 니 다. 이것 은 원본 데이터 의 복사 본 을 되 돌려 줍 니 다.a.reindex(index=list(a.index)+['five'],columns=list(a.columns)+['d'])
a.reindex(index=['one','five'],columns=list(a.columns)+['d'])
즉, index = [] 로 index 를 조작 하고 columns 표 로 열 을 조작 하 는 것 을 표시 합 니 다.
* * 2. 결 여 된 값 을 채 웁 니 다 * * a. fillna (value = x) 는 결 여 된 값 을 x 의 숫자 로 채 웁 니 다.
* * 3. 결 여 된 값 을 포함 하 는 줄 을 제거 합 니 다 * * a. dropna (how = any) 는 결 여 된 값 을 포함 하 는 모든 줄 을 제거 합 니 다.
합병
1. contactcontact (a1, axis = 0 / 1, keys = ['xx', 'xx', 'xx',...]), 그 중에서 a1 은 연결 할 목록 데 이 터 를 표시 하고 axis = 1 시 표 는 가로로 데 이 터 를 연결 합 니 다.axis = 0 또는 시간 을 가리 키 지 않 고 표 는 데 이 터 를 세로 로 연결 합 니 다.a1 에서 연결 할 데 이 터 는 몇 개 에 해당 하 는 keys 가 있 습 니 다. keys 를 설정 하 는 것 은 데이터 연결 후 모든 원시 a1 의 데 이 터 를 구분 하기 위해 서 입 니 다.
예: a1 = [b [a '], b [' c '] result = pd. concat (a1, axis = 1, keys = [' 1 ',' 2 '])
2. Append 는 한 줄 또는 여러 줄 의 데 이 터 를 DataFrame 에 a. append (a [2:], ignore index = True) 에 연결 하여 a 의 세 번 째 줄 이후 의 데 이 터 를 모두 a 에 추가 하 는 것 을 표시 합 니 다. ignore 가 지정 되 지 않 으 면index 인 자 는 추 가 된 데이터 의 index 를 유지 합 니 다. 만약 ignoreindex = Ture 는 모든 줄 에 자동 으로 색인 을 만 듭 니 다.
3. merge 는 SQL 의 join 설정 a1, a2 를 두 개의 dataframe 로 설정 하 는 것 과 유사 합 니 다. 두 개의 대상 이 연결 하 는 방식 은 다음 과 같 습 니 다. (1) 내부 연결, pd. merge (a1, a2, on = 'key') (2) 왼쪽 연결, pd. merge (a1, a2, on = 'key', how = 'left') (3) 오른쪽 연결, pd. merge (a1, a2, a 2, on = 'key', on = 'key', how = 'key', how = 'key', how = 'key', how = '오른쪽 연결, pd. merge (4) 외부 연결, pd. merge (a 1, a 2, a 2, a 2, a 2, a 2, a 2, a 2, =' outer ')네 사람의 구체 적 인 차이 에 대해 구체 적 으로 sql 에 해당 하 는 문법 을 참고 합 니 다.
6. 그룹 (groupby)
pd. date 로range 함수 생 성 연속 지정 일수 의 날짜 pd. daterange('20000101',periods=10)
def shuju():
    data={
        'date':pd.date_range('20000101',periods=10),
        'gender':np.random.randint(0,2,size=10),
        'height':np.random.randint(40,50,size=10),
        'weight':np.random.randint(150,180,size=10)
    }
a=DataFrame(data)
print(a)
        date  gender  height  weight
0 2000-01-01       0      47     165
1 2000-01-02       0      46     179
2 2000-01-03       1      48     172
3 2000-01-04       0      45     173
4 2000-01-05       1      47     151
5 2000-01-06       0      45     172
6 2000-01-07       0      48     167
7 2000-01-08       0      45     157
8 2000-01-09       1      42     157
9 2000-01-10       1      42     164

 a.groupby('gender').sum()      :  #   python groupby(''xx)   sum(),    
      。
gender     height  weight               
0           256     989
1           170     643

또한 a. groupby (gender). size () 로 각 gender 아래 의 수 를 계산 할 수 있 습 니 다.
따라서 groupby 의 역할 은 gender 에 따라 gender 를 분류 하고 숫자 에 대응 하 는 열 은 자동 으로 구 합 되 며 문자열 형식의 열 은 표시 되 지 않 습 니 다.물론 groupby (['x1', 'x2',...]) 여러 필드 를 동시에 사용 할 수 있 습 니 다. 그 역할 은 위 와 유사 합 니 다.
7. Categorical 은 특정한 열 에 따라 다시 인 코딩 하여 분류 합 니 다.
예 를 들 어 6 에서 a 중의 gender 를 재 인 코딩 하여 분류 하고 해당 하 는 0, 1 을 male, female 로 전환 하 는 과정 은 다음 과 같다.
a['gender1']=a['gender'].astype('category')
a['gender1'].cat.categories=['male','female']  #  0,1    category       。

 print(a)      :
      date    gender  height  weight gender1
0 2000-01-01       1      40     163  female
1 2000-01-02       0      44     177    male
2 2000-01-03       1      40     167  female
3 2000-01-04       0      41     161    male
4 2000-01-05       0      48     177    male
5 2000-01-06       1      46     179  female
6 2000-01-07       1      42     154  female
7 2000-01-08       1      43     170  female
8 2000-01-09       0      46     158    male
9 2000-01-10       1      44     168  female

그래서 다시 인 코딩 한 인 코딩 이 데이터 프레임 의 마지막 열 로 자동 으로 증가 한 다 는 것 을 알 수 있다.
8. 관련 조작
서술 적 통계: 1. a. mean () 은 기본적으로 각 열의 데이터 에 대해 평균 값 을 구한다.매개 변수 a. mean (1) 을 추가 하면 각 줄 에 평균 값 을 구 합 니 다.
2. 특정한 열 x 에서 각 값 이 나타 나 는 횟수 를 통계 한다. a ['x']. valuecounts();
3. 데이터 응용 함수 a. apply (lambda x: x. max () - x. min () 에 대해 모든 열 에서 최대 값 - 최소 값 의 차 이 를 되 돌려 줍 니 다.
4. 문자열 관련 작업 a ['gender 1']. str. lower () 는 gender 1 의 모든 영문 대문자 를 소문 자로 바 꿉 니 다. dataframe 은 str 속성 이 없고 series 만 있 으 므 로 a 의 gender 1 필드 를 선택 하 십시오.
9. 시간 서열
6 중 pd. daterange ('xxxx', periods = xx, freq = 'D / M / Y...') 함수 가 연속 으로 지 정 된 일수 의 날짜 목록 을 생 성 합 니 다.예 를 들 어 pd. daterange ('200000101', periods = 10), 그 중에서 periods 는 지속 빈 도 를 나타 낸다.pd.date_range ('20000201', '20000210', freq = 'D') 도 주파 수 를 지정 하지 않 고 시작 날짜 만 지정 할 수 있 습 니 다.
또한 freq 를 지정 하지 않 으 면 기본 값 은 시작 날짜 부터 시작 하 며 빈 도 는 day 입 니 다.기타 주파 수 는 다음 과 같다.
1.png
10. 그림 그리 기 (plot)
 pycharm    :import matplotlib.pyplot as plt
a=Series(np.random.randn(1000),index=pd.date_range('20100101',periods=1000))
b=a.cumsum()
b.plot()
plt.show()    #        plt.show(),         。

2.PNG
다음 코드 를 사용 하여 여러 개의 시간 서열 도 를 생 성 할 수 있 습 니 다.
a=DataFrame(np.random.randn(10004),index=pd.date_range('20100101',periods=1000),columns=list('ABCD'))
b=a.cumsum()
b.plot()
plt.show() 

3.png
11. 파일 가 져 오기 및 내 보 내기
엑셀 파일 을 쓰 고 읽 는 것 은 엑셀 시트 에 쓸 때 xls 와 csv 를 두 가지 로 쓰 지만 csv 를 적 게 사용 하 는 것 을 권장 합 니 다. 그렇지 않 으 면 표 에서 데이터 형식 을 조정 할 때 저장 할 때 새 형식 을 저장 하 는 지 계속 물 어 보 는 것 이 귀 찮 습 니 다.데 이 터 를 읽 을 때 어떤 sheet 을 지정 하면 pycharm 에서 형식 이 일치 하지 않 습 니 다.
그리고 데 이 터 를 표 에 쓸 때 엑셀 은 표 맨 앞 에 필드 를 추가 하여 데이터 줄 에 번 호 를 매 깁 니 다.
a.to_excel(r'C:\\Users\\guohuaiqi\\Desktop\\2.xls',sheet_name='Sheet1')    

a=pd.read_excel(r'C:\\Users\\guohuaiqi\\Desktop\\2.xls','Sheet1',na_values=['NA'])

  sheet_name   Sheet1       ;     ,              , 
       NA。

          csv     :
a.to_csv(r'C:\\Users\\guohuaiqi\\Desktop\\1.csv',sheet_name='Sheet1')
a=pd.read_csv(r'C:\\Users\\guohuaiqi\\Desktop\\1.csv',na_values=['NA'])

미스터 블 루
링크:https://www.jianshu.com/p/682c24aef525
약서
간 서 저작권 은 작가 의 소유 이 며, 어떠한 형식의 전재 도 작가 에 게 연락 하여 권한 을 수 여 받 고 출처 를 밝 혀 주 십시오.

좋은 웹페이지 즐겨찾기