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

파이썬 데이터 분석 및 시각화

<시간/>

Pandas는 데이터 과학 및 분석을 위한 가장 인기 있는 Python 라이브러리 중 하나입니다. Pandas 라이브러리는 데이터 조작, 분석 및 정리에 사용됩니다. 이것은 순전히 C로 작성된 저수준 NumPy에 대한 고수준 추상화입니다. 이 섹션에서는 분석가나 데이터 과학자로서 알아야 할 가장 중요한(가장 자주 사용되는) 몇 가지를 다룰 것입니다.

라이브러리 설치

pip를 사용하여 필요한 라이브러리를 설치할 수 있습니다. 명령 터미널에서 아래 명령을 실행하기만 하면 됩니다.

pip intall pandas

DataFrame 및 시리즈

먼저 팬더의 두 가지 주요 기본 데이터 구조를 이해해야 합니다. DataFrame 및 시리즈. 판다를 마스터하려면 이 두 가지 데이터 구조를 확실히 이해해야 합니다.

시리즈

Series는 python 내장형 리스트와 유사하지만 각 요소나 인덱스에 lable이 연결되어 있다는 점에서 차이점이 있는 객체입니다.

>>> pandas를 pd로 가져오기>>> my_series =pd.Series([12, 24, 36, 48, 60, 72, 84])>>> my_series0 121 242 363 484 605 726 84dtype:int64 

위의 출력에서 ​​'index'는 왼쪽에, 'value'는 오른쪽에 있습니다. 또한 각 Series 객체에는 데이터 유형(dtype)이 있으며 이 경우에는 int64입니다.

인덱스 번호로 요소를 검색할 수 있습니다.

>>> my_series[6]84

색인(레이블)을 명시적으로 제공하려면 다음을 사용하십시오.

>>> my_series =pd.Series([12, 24, 36, 48, 60, 72, 84], 인덱스 =['ind0', 'ind1', 'ind2', 'ind3', 'ind4' , 'ind5', 'ind6'])>>> my_seriesind0 12ind1 24ind2 36ind3 48ind4 60ind5 72ind6 84dtype:int64

또한 인덱스로 여러 요소를 검색하거나 그룹을 할당하는 것은 매우 쉽습니다.

>>> my_series[['ind0', 'ind3', 'ind6']]ind0 12ind3 48ind6 84dtype:int64>>> my_series[['ind0', 'ind3', 'ind6']] =36>>> my_seriesind0 36ind1 24ind2 36ind3 36ind4 60ind5 72ind6 36dtype:int64

필터링 및 수학 연산도 쉽습니다.

>>> my_series[my_series>24]ind0 36ind2 36ind3 36ind4 60ind5 72ind6 36dtype:int64>>> my_series[my_series <24ind24] * 2Series([], dtype:int64)>>> my_series 36dtype:int64>>>

다음은 Series의 다른 일반적인 작업입니다.

>>>> #사전으로 작업>>> my_series1 =pd.Series({'a':9, 'b':18, 'c':27, 'd':36})>>> my_series1a 9b 18c 27d 36dtype:int64>>> #Label 속성>>> my_series1.name ='숫자'>>> my_series1.index.name ='문자'>>> my_series1lettersa 9b 18c 27d 36이름:숫자, dtype:int64>> #chaning Index>>> my_series1.index =['w', 'x', 'y', 'z']>>> my_series1w 9x 18y 27z 36이름:숫자, dtype:int64>>>

데이터프레임

DataFrame은 행과 열을 포함하므로 테이블처럼 작동합니다. DataFrame의 각 열은 Series 개체이고 행은 Series 내부의 요소로 구성됩니다.

내장된 Python dicts를 사용하여 DataFrame을 구성할 수 있습니다.

>>> df =pd.DataFrame({ '국가':['중국', '인도', '인도네시아', '파키스탄'], '인구':[1420062022, 1368737513, 269536482, 4424] 지역 ':[9388211, 770880, 1811570, 770880, 중국 14200620211 2973190 인도 13687375132 14200620221 2973190 인도 2695364823 770880 파키스탄 204596442>>> DF ['Country '] 0 China1 India2 인도네시아 3 Pakistanname :국가, dtype:개체>>> df.columnsIndex(['영역', '국가', '인구'], dtype='개체')>>> df.indexRangeIndex(시작=0, 중지=4, 단계=1)>>>

요소 액세스

행 인덱스를 명시적으로 제공하는 방법에는 여러 가지가 있습니다.

>>> df =pd.DataFrame({ '국가':['중국', '인도', '인도네시아', '파키스탄'], '인구':[1420062022, 1368737513, 269536482, 4424] Landarea' :[9388211, 2973190, 1811570, 770880]}, index =['CHA', 'IND', 'IDO', 'PAK'])>>> dfCountry Landarea PopulationCHA China 93882016 20220 770880 204596442>>> df.index =['CHI', 'IND', 'IDO', 'PAK']>>> df.index.name ='국가 코드'>>> dfCountry Landarea PopulationCountry CodeCHI 중국 9388211 102200 India6220IND 2973190 1368737513IDO 인도네시아 1811570 269536482PAK 파키스탄 770880 204596442>>> df['Country']국가 코드CHI ChinaIND IndiaIDO IndonesiaPAK 파키스탄 이름:국가, dtype:개체

인덱스를 사용한 행 액세스는 여러 가지 방법으로 수행할 수 있습니다.

  • .loc 사용 및 색인 레이블 제공
  • .iloc 사용 및 색인 번호 제공
>>>> df.loc['IND']국가 IndiaLandarea 2973190Population 1368737513Name:IND, dtype:object>>> df.iloc[1]Country IndiaLandarea 2973190Population 1368737513Dtype:>dtype:.loc[['CHI', 'IND'], '인구']국가 코드CHI 1420062022IND 1368737513이름:인구, dtype:int64

파일 읽기 및 쓰기

Pandas는 CSV, XML, HTML, Excel, SQL, JSON을 비롯한 많은 인기 있는 파일 형식을 지원합니다. 가장 일반적으로 CSV 파일 형식이 사용됩니다.

csv 파일을 읽으려면 다음을 실행하십시오.

>>> df =pd.read_csv('GDP.csv', sep =',')

명명된 인수 sep는 GDP.csv라는 CSV 파일의 구분 문자를 가리킵니다.

집계 및 그룹화

pandas에서 데이터를 그룹화하기 위해 .groupby 메소드를 사용할 수 있습니다. 판다에서 집계 및 그룹화 사용을 보여주기 위해 Titanic 데이터 세트를 사용하여 아래 링크에서 동일한 것을 찾을 수 있습니다.

https://yadi.sk/d/TfhJdE2k3EyALt

>>>> titanic_df =pd.read_csv('titanic.csv')>>> print(titanic_df.head())PassengerID 이름 PClass 나이 \0 1 Allen, Miss Elisabeth Walton 1st 29.001 2 Allison, Miss Helen Loraine 1st 2.002 3 Allison, Mr Hudson Joshua Creighton 1위 30.003 4 Allison, Mrs Hudson JC(Bessie Waldo Daniels) 1위 25.004 5 Allison, Master Hudson Trevor 1위 0.92 Sex Survived SexCode0 여성 1 0121 여성 1 0 남성>>

생존한 승객(여성 및 남성)이 몇 명이고 생존하지 못한 승객이 몇 명인지 계산해 보겠습니다. .groupby를 사용하겠습니다.

>>> print(titanic_df.groupby(['Sex', 'Survived'])['PassengerID'].count())Sex Survivedfemale 0 154 1 308male 0 709 1 142Name:PassengerID, dtype:int64 

객실 등급 기준 위 데이터:

>>> print(titanic_df.groupby(['PClass', 'Survived'])['PassengerID'].count())PClass Survived* 0 11st 0 129 1 1932nd 0 160 1 1193rd 0 573 이름:1 13 승객 ID, dtype:int64

판다를 사용한 시계열 분석

팬더는 시계열 데이터를 분석하기 위해 만들어졌습니다. 설명을 위해 아마존 5년 주가를 사용했습니다. 아래 링크에서 다운로드할 수 있습니다.

https://finance.yahoo.com/quote/AMZN/history?period1=1397413800&period2=1555180200&interval=1mo&filter=history&frequency=1mo

>>> pandas를 pd로 가져오기>>> amzn_df =pd.read_csv('AMZN.csv', index_col='날짜', parse_dates=True)>>> amzn_df =amzn_df.sort_index()>>> print( amzn_df.info())DatetimeIndex:62개 항목, 2014-04-01 ~ 2019-04-12데이터 열(총 6개 열):Open 62 non-null objectHigh 62 non-null null objectLow 62 non-null objectClose 62 non-null objectAdj Close 62 non-null objectVolume 62 non-null objectdtypes:object(6) 메모리 사용량:1.9+ KBNone

위에서 DatetimeIndex by Date 열을 사용하여 DataFRame을 만든 다음 정렬합니다.

그리고 평균 종가는,

>>> amzn_df.loc['2015-04', '닫기'].mean()421.779999

시각화

matplotlib 라이브러리를 사용하여 판다를 시각화할 수 있습니다. 아마존 주식 과거 데이터 세트를 가지고 그래프를 통해 특정 기간의 가격 움직임을 살펴보겠습니다.

>>> matplotlib.pyplot을 plt로 가져오기>>> df =pd.read_csv('AMZN.csv', index_col ='Date', parse_dates =True)>>> new_df =df.loc['2014-06 ':'2018-08', ['닫기']]>>> new_df=new_df.astype(float)>>> new_df.plot()>>> plt. 쇼()

파이썬 데이터 분석 및 시각화