1. matplotlib library

   :  Python 프로그래밍 언어 및 numpy 라이브러리 Data를 선, 막대, 산점도, 히스토그램, 파이, 박스, 바이올 등으로 시각화해주는 그래픽 라이브러리입니다. png, pdf, svg 등의 포맷으로 저장이 가능합니다.

 

2. plot 그리기

   : matplotlib.pyplot을 plt로 불러와서 아래 code를 입력하면 아래와 같은 그래프를 얻을 수 있습니다.

 
   import matplotlib.pyplot as plt

   plt.figure(figsize=(5,2))
   plt.plot([1,2,3,4,5],[1,4,6,9,25], 'go')
   plt.show()
 
plt.figure(figsize=(가로 인치, 세로 인치)) 그래프 size 결정 
plt.plot([ x좌표 ],[ y 좌표])  그래프의 x, y 좌표 설정
plt.show()   : 그래프를 그리는 명령어

                          

 

 

   : 이번에는 그래프 스타일(ggplot) 및 마커(circle)에 변경을 주겠습니다. 다른 설정에 대한 option은 link에서 확인이 가능합니다. 

 
   plt.style.use('ggplot')
   plt.plot([1,2,3,4,5], [1,4,6,9,25], 'go')
   plt.show()
 
plt.style.use('ggplot') 그래프의 형식을 지정
plt.plot([1,2,3,4,5], [1,4,6,9,25], 'go') 'go'는 green circle 을 의미

 

 

 

   : 그래프의 제목 및 x, y 축 이름을 지정해보겠습니다.

 
   plt.figure(figsize=(3,3))
   plt.plot([1,2,3,4,5],[1,4,6,9,25], 'go:')
   plt.title("Graph")
   plt.xlabel('X')
   plt.ylabel('Y')
   plt.show()
 
plt.plot([1,2,3,4,5],[1,4,6,9,25], 'go:') go: 은 green + circle + dotted line style 를 의미
plt.title("Graph") 그래프 이름을 Graph로 설정
plt.xlabel('X') x축 이름을 X로 설정
plt.ylabel('Y') y축 이름을 Y로 설정

 

 

   : 이번에는 한번에 여러개의 선을 그리는 방법을 확인해 보겠습니다.

 
   x_label = ['Jan','Feb','Mar','Apr','May','Jun']
   y_label_01 = [100,60,70,80,65,90]
   y_label_02 = [50,80,30,10,90,60]
   y_label_03 = [80,70,60,75,45,80]

   plt.plot(x_label, y_label_01, 'ro-', label="y_label_01")
   plt.plot(x_label, y_label_02, 'bo--', label="y_label_02")
   plt.plot(x_label, y_label_03, 'go:', label="y_label_03")
   plt.legend(loc='lower right')
   plt.xlim(-0.5,5.5)
   plt.ylim(0,105)

   plt.show()
 
plt.plot(x_label, y_label_01, 'ro-', label="y_label_01") label의 이름을 y_lable_01로 지
plt.legend(loc='lower right') label 을 표시하는 위치를 low right 로 지정
plt.xlim(-0.5,5.5) x축 범위
plt.ylim(0,105) y축 범위

 

 

   : 이중 y축을 사용한 꺾은선 그래프이다. 하나의 그림위에 axis를 두개 생성해서 각 axis에 그래프를 그린 뒤 합친다고 생각하면 된다.

 
   fig, ax1 = plt.subplots()
   ax2 = ax1.twinx()

   x_label = ['Jan','Feb','Mar','Apr','May','Jun']
   y_label_01 = [100,60,70,80,85,90]
   y_label_02 = [500,800,300,100,900,600]

   line_01 = ax1.plot(x_label, y_label_01, color = "red", label="y_label_01")
   line_02 = ax2.plot(x_label, y_label_02, color = "yellow", label="y_label_02")

   lines = line_01 + line_02

   ax1.set_ylabel("1st_y")
   ax2.set_ylabel("2nd_y")

   labels = [line_01[0].get_label(), line_02[0].get_label()]
   plt.legend(lines, labels, loc="lower right")

   plt.show()
 

'데이터 처리' 카테고리의 다른 글

1. pandas 기초  (0) 2024.07.20

1. pandas library

   : 데이터를 가공하기 위해 dataframe을 다루는 library 이다. csv, excel 파일을 불러와 처리할 수 있다.

2. kaggle 에 접속해서 dataset download

   : 이번 실습에서는 kaggle 에서 "Top 50 Indian Companies" 의 dataset을 활용했다. Link를 타고 들어가서 가입 후 무료로 다운받아 사용하면 된다. kaggle에는 분석을 위해 공개된 다양한 datasets이 존재한다.

 

3. pandas library 실행

   : pandas를 import 해서 pd 라는 약어를 사용하겠다고 선언하는 것이다. 실행했을 때 아무것도 뜨지 않는다면, 정상적으로 import 된것이다. 만약 아래 "# 결과 #" 와 같이 나왔다면 터미널 창에 "pip install pandas"를 입력해 library를 실행한다.

import pandas as pd


# 결과 #
  File "경로~", line 1, in <module>
    import pandas as pd
ModuleNotFoundError: No module named 'pandas'

 

4. dataset 불러오기

   : code 파일이 있는 폴더에 2번 캐글에서 다운 받은 파일의 압축을 풀었다는 가정에서 진행하겠다. 압축을 풀면 archive 폴더에 "Top Company.csv" 파일이 생성된다. 아래 code를 입력하면 dataframe 확인이 가능하다.

import pandas as pd

df_archive = pd.read_csv('archive/Top Company.csv')

print(df_archive)          # dataframe 전체 확인.
print(df_archive.head())   # dataframe 에서 5개의 행을 확인. head(3) 3번째 행까지 확인.
print(df_archive.tail())   # head와 반대로 마지막 5개의 행을 확인.


# 결과 # → head()의 결과이다.
   Rank                             Name     Industry  Revenue (in ₹ Crore) Revenue growth Profits (in ₹ Crore) Headquarters State Controlled
0     1           Indian Oil Corporation  Oil and gas                424321          13.2%                22189    New Delhi              Yes
1     2      Reliance Industries Limited  Oil and gas                410295          28.2%                36075       Mumbai              NaN
2     3  Oil and Natural Gas Corporation  Oil and gas                333143          11.0%                22106    New Delhi              Yes
3     4              State Bank of India      Banking                306528           2.6%               −4,556       Mumbai              Yes
4     5                      Tata Motors   Automotive                301175           7.9%                 8989       Mumbai              NaN

 

4. dataset 확인

 4.01. info() : column별 data type 확인

   : column별 data type에 따라 data를 처리하는 방식이 달라진다. 그렇기 때문에 data의 type의 확인은 중요하다. 아래 보면 컬럼별로 50개의 정보가 있으며, "State Controlled"에 50개중 20개의 정보만 있는 것을 확인 할수 있다. (= 결측치가 30개가 있다.)

print(df_archive.info())


# 결과 #
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 50 entries, 0 to 49
Data columns (total 8 columns):
 #   Column                Non-Null Count  Dtype
---  ------                --------------  -----
 0   Rank                  50 non-null     int64
 1   Name                  50 non-null     object
 2   Industry              50 non-null     object
 3   Revenue (in ₹ Crore)  50 non-null     int64
 4   Revenue growth        50 non-null     object
 5   Profits (in ₹ Crore)  50 non-null     object
 6   Headquarters          50 non-null     object
 7   State Controlled      20 non-null     object
dtypes: int64(2), object(6)
memory usage: 3.2+ KB
None

 

 4.02. 컬럼명 확인

   : 컬럼 목록을 확인 할 수 있다.

print(df_archive.columns)


# 결과 #
Index(['Rank', 'Name', 'Industry', 'Revenue (in ₹ Crore)', 'Revenue growth',
       'Profits (in ₹ Crore)', 'Headquarters', 'State Controlled'],
      dtype='object')

 

 4.03. 특정 컬럼 data 확인

   : 1개의 컬럼 선택과 여러개의 컬럼을 선택해서 확인하는 방법이다. 차례로 입력해서 결과를 확인하자.

# 1개의 컬럼 선택
print(df_archive['Name'].head())

# 결과 #
0             Indian Oil Corporation
1        Reliance Industries Limited
2    Oil and Natural Gas Corporation
3                State Bank of India
4                        Tata Motors



# 2개의 컬럼 선택
print(df_archive[['Name','Industry']].head())

# 결과 #
                              Name     Industry
0           Indian Oil Corporation  Oil and gas
1      Reliance Industries Limited  Oil and gas
2  Oil and Natural Gas Corporation  Oil and gas
3              State Bank of India      Banking
4                      Tata Motors   Automotive

 

 4.04. 원하는 조건의 정보만 추출하기

   : 1 개의 조건으로 정보를 추출하는 방법이다. Industry 컬럼에서 "Oil and gas"만 추출해 보겠다.

print(df_archive[df_archive['Industry']=="Oil and gas"])


# 결과 # 
    Rank                             Name     Industry  Revenue (in ₹ Crore) Revenue growth Profits (in ₹ Crore) Headquarters State Controlled
0      1           Indian Oil Corporation  Oil and gas                424321          13.2%                22189    New Delhi              Yes
1      2      Reliance Industries Limited  Oil and gas                410295          28.2%                36075       Mumbai              NaN
2      3  Oil and Natural Gas Corporation  Oil and gas                333143          11.0%                22106    New Delhi              Yes
5      6                 Bharat Petroleum  Oil and gas                238638          13.7%                 9009       Mumbai              Yes
6      7              Hindustan Petroleum  Oil and gas                221693          13.4%                 7218       Mumbai              Yes
21    22                    Nayara Energy  Oil and gas                 73015          10.7%                  576       Mumbai              NaN
30    31                             GAIL  Oil and gas                 55503          11.6%                 4799    New Delhi              Yes
33    34                             MRPL  Oil and gas                 50209           8.9%                 1993    Mangalore              Yes
43    44    Chennai Petroleum Corporation  Oil and gas                 33187          20.0%                  927      Chennai              Yes
47    48                     Petronet LNG  Oil and gas                 30949          23.9%                 2110    New Delhi              Yes

 

   : 2개 이상의 조건이다. 아래와 같은 형식으로 조건을 추가하면된다.

and : (조건1) & (조건2)
 or : (조건1) | (조건2)

 

   : 아래 예제를 참고하자. info()에서 확인했듯이 숫자형 자료는 "Rank"와 "Revenue (in ₹ Crore)" 두개 뿐이다. 조건을 줄 때 이러한 정보를 확인해야 한다. 나머지는 data type이 object 였다. 필요시 추가로 가공해서 사용해야 한다.

print(df_archive[(df_archive['Industry']=="Oil and gas") & (df_archive['Revenue (in ₹ Crore)']<=100000)])


# 결과 #
    Rank                           Name     Industry  Revenue (in ₹ Crore) Revenue growth Profits (in ₹ Crore) Headquarters State Controlled
21    22                  Nayara Energy  Oil and gas                 73015          10.7%                  576       Mumbai              NaN
30    31                           GAIL  Oil and gas                 55503          11.6%                 4799    New Delhi              Yes
33    34                           MRPL  Oil and gas                 50209           8.9%                 1993    Mangalore              Yes
43    44  Chennai Petroleum Corporation  Oil and gas                 33187          20.0%                  927      Chennai              Yes
47    48                   Petronet LNG  Oil and gas                 30949          23.9%                 2110    New Delhi              Yes

 

pandas library 기초는 이정도로 마무리 하겠다. 추가적이 내용은 data 가공 및 활용을 하면서 필요시에 추가해 나가겠다.

 

 

'데이터 처리' 카테고리의 다른 글

2. matplotlib 기본 사용법  (0) 2024.07.22

+ Recent posts