반응형

04. 판다스 시리즈(Pandas Series) 연산 (min(), max(), mean(), diff(), rank())

1) 기본 코드

import pandas as pd

data1 = [1, 2, 3, 4, 5]
index1 = ['row1', 'row2', 'row3', 'row4', 'row5']

s1 = pd.Series(data=data1, index=index1)

data2 = [6, 7, 8, 9, 10]
index2 = ['row3', 'row4', 'row5', 'row1', 'row2']

s2 = pd.Series(data=data2, index=index2)

sum = s1 + s2

print(sum)
print('max : ' + str(sum.max()))
print('min : ' + str(sum.min()))
print('mean : ' + str(sum.mean()))
print(str(sum.diff(periods=2))
print(sum.rank(ascending=False)) #내림차순
print(sum.rank(ascending=True)) #오름차순

 

반응형

 

 

2) 실행 결과

sum = s1 + s2
print(sum)
row1    10
row2    12
row3     9
row4    11
row5    13
dtype: int64
  • sum = s1 + s2
    • 두개의 Series를 합산
    • 각 Series의 인덱스가 같은 것과 값을 합산
    • 각각의 인덱스 순서가 달라도 합산 가능
print('max : ' + str(sum.max()))
print('min : ' + str(sum.min()))
print('mean : ' + str(sum.mean()))
max : 13
min : 9
mean : 11.0
  • sum이란 Series에서 최대값, 최솟값, 평균값을 출력
print('Diff')
print(sum.diff(periods=2))
Diff
row1    NaN
row2    NaN
row3   -1.0
row4   -1.0
row5    4.0
dtype: float64
  • 값의 차이를 출력
  • periods=2
    • ex) ‘row1’과 ‘row3’의 값 차이를 ‘row3’에 출력
    • ‘row1’, ‘row2’는 비교할 값이 없으므로 NaN으로 출력
print(sum.rank(ascending=False)) #내림차순

print(sum.rank(ascending=True)) #오름차순
row1    4.0
row2    2.0
row3    5.0
row4    3.0
row5    1.0
dtype: float64

row1    2.0
row2    4.0
row3    1.0
row4    3.0
row5    5.0
dtype: float64
  • 내림차순
    • sum.rank(ascending=False)
  • 오름차순
    • sum.rank(ascending=True)
반응형
반응형

03. 판다스 시리즈(Pandas Series) Values 수정, 삭제

1) 기본 코드

import pandas as pd

data = [1,2,3,4,5]
index = ['row1', 'row2', 'row3', 'row4', 'row5']

s = pd.Series(data=data, index=index)


#값 수정 방법
s.iloc[0] = 10
s.loc['row2'] = 20
s[2] = 30
s['row4'] = 40

print(s)
print(s.drop('row5'))
print(s)

 

반응형

 

2) 실행 결과

s.iloc[0] = 10
s.loc['row2'] = 20
s[2] = 30
s['row4'] = 40
print(s)
row1    10
row2    20
row3    30
row4    40
row5     5
dtype: int64
  • 각 인덱스에 접근하여 일반 변수와 같이 값을 할당
  • 한번에 여러 값 변경도 가능
    • ex) s.iloc[0:5] = 10
      1행 부터 5행 까지 값이 모두 10으로 수정
print(s.drop('row5'))
row1    10
row2    20
row3    30
row4    40
dtype: int64
  • 해당 값을 제외하고 값을 출력
  • 인덱스의 명칭(위의 ‘row5’)을 넣어야 함
  • s라는 Series에서 ‘row5’를 빼고 출력하는 것일 뿐 삭제하는 것은 아님
print(s)
row1    10
row2    20
row3    30
row4    40
row5     5
dtype: int64
  • s.drop(’row5’)실행 후 다시 print(s)를 실행해도 row5가 남아있는 것을 볼 수 있음
  • drop은 삭제가 아니라 제외하고 출력
반응형
반응형

02. 판다스 시리즈(Pandas Series) 인덱싱 / 슬라이싱

1) 기본코드

import pandas as pd

data = [1,2,3,4,5]
index = ['row1', 'row2', 'row3', 'row4', 'row5']

s = pd.Series(data=data, index=index)

#출력1
print(s.iloc[0])
print(s.loc['row1'])

#출력2
print(s.iloc[0:3])
print(s.loc['row1':'row3'])

#출력3
print(s.iloc[[0,2]])
print(s.loc[['row1', 'row3']])
  • iloc / loc 차이
  • iloc[int]
    • 숫자로 인덱싱
      • 0,1,2....와 -1,-2... 음수도 가능
    • loc[String]
      • 문자열로 인덱싱
      • 인덱스의 값을 기준으로 인덱싱
print(s.iloc[0])
print(s.loc['row1'])
1
1
  • print(s.iloc[0])
    • 첫번재 행의 값 출력
  • print(s.loc[’row1’])
    • 인덱스값 ‘row1’의 값 출력
print(s.iloc[0:3])
print()
print(s.loc['row1':'row3'])
row1    1
row2    2
row3    3
dtype: int64

row1    1
row2    2
row3    3
dtype: int64
  • print(s.iloc[0:3])
    • 0:3번째 데이터 출력
  • print(s.loc['row1':'row3'])
    • 인덱스 문자열 ‘row1’부터 ‘row3’까지의 값 출력
반응형
print(s.iloc[[0,2]])
print()
print(s.loc[['row1', 'row3']])
row1    1
row3    3
dtype: int64

row1    1
row3    3
dtype: int64
  • print(s.iloc[[0,2]])
    • 0, 2번째 데이터 출력
  • print(s.loc[['row1', 'row3']])
    • 인덱스 문자열 ‘row1’, ‘row3’의 값 출력
반응형
반응형

1. 시리즈(Series) 기본 사용법

1) 기본 코드

import pandas as pd

data = [1,2,3]
index = ['row1', 'row2', 'row3']

s = pd.Series(data=data, index=index)

print(s)

print(s * 10)

print(s.index)

print(s.values)

2) 실행결과

print(s)
row1    1
row2    2
row3    3
dtype: int64
  • 첫열은 인덱스 값(미 설정시 0,1,2....로 자동 지정)
  • 두번재 열은 값
  • dtype : 두번째 열의 데이터 타입
  • Series는 일차원 배열이므로 열 추가가 불가
print(s * 10)
print('\n')
print([1,2,3] * 5)
row1    10
row2    20
row3    30
dtype: int64


[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
  • padas Series는 각 행의 값에 10을 곱한 값을 출력
  • 2번째 파이썬 리스트의 경우 [1,2,3]을 10번 반복해서 출력
print(s.index)
Index(['row1', 'row2', 'row3'], dtype='object')
  • 인덱스 값만 출력
print(s.values)
[1 2 3]
  • 값만 출력
반응형
반응형

1. 판다스(Pandas)

  1. 데이터 분석에 많이 사용되는 파이썬 라이브러리
  2. 기존 파이썬의 리스트 배열이 아닌 판다스 자체적인 자료 구조를 사용
  3. 판다스 시리즈(pandas Series)를 통한 일차원 데이터 관리에 유용
  4. 판다스 데이터프레임(pandas DataFrame)을 통한 이차원 데이터 관리에 유용
  5. 공식 페이지
    https://pandas.pydata.org/
 

pandas - Python Data Analysis Library

pandas pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool, built on top of the Python programming language. Install pandas now!

pandas.pydata.org

 

반응형
반응형

파이썬 matplotlib로 파이그래프 그리고 설정하기

 

1. 목표

  • 파이 그래프(도넛, 원형 그래프)를 그린다
  • 파이그래프에 그림자, 값, 효과를 설정한다

2. 전체코드

import matplotlib.pyplot as plt

label = ['Korea', 'German', 'Sweden', 'France', 'Italy']
pop = [51821669	, 82379121, 10255102, 65712057, 59575231]
wg = {'width': 0.6, 'edgecolor': 'b', 'linewidth':3}

plt.pie(pop, labels=label, autopct='%.1f%%',
        explode=[0, 0.05, 0, 0, 0], shadow=True,
        wedgeprops=wg, startangle=10)

plt.show()

 

3. 뜯어보기

wg = {'width': 0.6, 'edgecolor': 'b', 'linewidth':3}
  • 파이 그래프에서 사용되는 속성을 dict형식으로 미리 표현한다.

    • width : 0.6

      • 도넛 모양의 그래프를 그릴때 사용한다

      • 도넛의 중심부의 크기를 설정한다

      • 0.6은 절대 값이아닌 전체 크기의 60%를 뜻한다.

    • edgecolor : b

      • 파이 그래프 각 조각의 테두리 색을 설정한다.

      • 'b'이므로 blue로 설정된다

    • linewidth : 3

      • 파이 그래프 각 조각의 테두리 두께를 설정한다.

plt.pie(pop, labels=label, autopct='%.1f%%',
        explode=[0, 0.05, 0, 0, 0], shadow=True,
        wedgeprops=wg, startangle=10)
  • pop

    • 파이를 그릴 데이터를 입력한다

  • label

    • 각 파트의 라벨을 입력한다.

  • autopct = '%.1f%%'

    • 각 파이 조각의 비율을 표시한다.

    • 0.1f이기에 소수점 1자리까지 표시한다.

  • explode=[0, 0.05, 0, 0, 0]

    • 중심에서 떨어져 있는 효과를 준다.

    • 특정 데이터를 강조할때 사용한다

  • shadow=True

    • 그림자 효과를 넣는다

  • wedgeprops=wg

    • 위에서 설정한 wg라는 dict값으로 설정한다

  • startangle=10

    • 처음 시작 각도를 10도부터 시작한다 (기준점은 12시방향이 0도다)

 

4. 결과

반응형
반응형

파이썬 matplotlib 범례 설정하기

 

 

1. 목표

  • 범례를 넣고 위치, 폰트, 색상등을 설정한다
  • x, y축의 범위를 설정한다

2. 전체코드

import matplotlib.pyplot as plt

label = ['Korea', 'German', 'Sweden', 'France', 'Italy']
pop = [5182, 8237, 1025, 6571, 5957]
pop2 = [3224, 6119, 800, 5077, 5369]

plt.plot(label, pop)
plt.plot(label, pop2)
# plt.legend([2020, 1970], loc='upper right', ncol=2, fontsize=10, labelcolor='#008000')
plt.legend([2020, 1970], loc='upper right', ncol=1, fontsize=10, labelcolor='#008000')

plt.axis([-1,5,0,10000])

plt.show()

 

3. 뜯어 보기

plt.legend([2020, 1970], loc='upper right', ncol=2, fontsize=10, labelcolor='#008000')
  • [2020, 1970]

    • 2가지 범례의 이름이다.

    • plt.plot에서 값을 넣은 순서대로 명칭이 정해진다.

  • loc='upper right'

    • location을 설정한다.

    • 설정하지 않으면 자동으로 적절한 위치에 배치된다.

  • ncol=2

    • 범례를 표시할때 열의 개수를 정한다.

    • 범례가 2개일 경우 ncol=2이면 1행 2열로 2개의 범례를 출력한다.

    • 아래 결과 그림 참고

plt.axis([-1,5,0,10000])
  • 축의 표시 범위를 설정한다.

  • [-1, 5, 0, 10000]

    • 앞에서부터 x-min, x-max, y-min, y-max이다.

4. 결과

반응형
반응형

파이썬 matplotlib 두개의 그래프 동시 표시하기

 

 

1. 목표

  • 한 화면에 두개의 그래프 표시하기

  • 각 포인트에 데이터값(좌표) 표시하기

 

2. 전체 코드

import matplotlib.pyplot as plt
import numpy as np

plt.title('chapter 01')
plt.ylabel('Y axis')
plt.xlabel('X axis')

t1 = np.arange(0, 5, 1)
t2 = np.arange(0, 5, 1)

plt.subplot(211)
plt.pie(t1)

plt.subplot(212)
plt.plot(t2, np.cos(t2), 'r--')

for i, txt in enumerate(t2):
    plt.text(t2[i]+0.1, np.cos(t2[i]), str(np.cos(t2[i])), fontsize=10)

plt.show()

 

3. 뜯어보기

plt.subplot(211)
plt.pie(t1)
  • 한 화면에 2개 이상의 차트를 출력할 때 subplot을 사용한다.

  • plt.pie(t1)을 이용하여 t1데이터로 파이그래프(원형 그래프)를 그린다.

for i, txt in enumerate(t2):
    plt.text(t2[i]+0.1, np.cos(t2[i]), str(np.cos(t2[i])), fontsize=10)
  • plt.plot에서 그린 t2에 대한 코사인 그래프에 각 포인트값을 표시한다.

  • enumerate()는 리스트의 인덱스 번호와 내용을 같이 출력한다.

  • plt.text는 차트에 글자를 출력한다.

    • plt.annotation()을 사용해서도 값을 표시 할 수있지만 폰트 조정이 안된다.

  • 't2[i] + 0.1, np.cos(t2[i])'는 글자가 쓰여질 위치를 선택한다.

  • 'str(np.cos(t2[i]))'는 출력할 값을 뜻한다.

    • str()은 두번째 인수와 구분하여 설명하기 위해 사용했을뿐 없이 사용해도 무관하다.

 

4. 결과

반응형

+ Recent posts