티스토리 뷰

Intro

 - Editor : sublime text3

 - python 3.8.1

 - pandas 1.0.1 

 - xlrd 1.2.0 : excel read

 - openpyxl 3.0.3 : excel save

    pandas에서 excel을 다루기 위해서 xlrd,openpyxl module이 필요하다.

import pandas as pd


df = pd.read_excel('fname',sheet_name='sheet_name')

ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 
             for Excel support Use pip or conda to install xlrd.
## python3 & modules(pandas, xlrd, openpyxl) version 확인
## python3은 terminal에서, modules은 python3 prompt에서 확인

# python3 version
$ python3 -V

# pandas version
>> import pandas as pd
>> print(pd.__version__)

# xlrd version
>> import xlrd
>> print(xlrd.__version__)

# openpyxl version
>> import openpyxl
>> print(openpyxl.__version__)

1. pd.read_excel 읽기, dataframe.to_excel 저장

# -*- coding: utf-8 -*-

import os
import datetime
import pandas as pd


#### dir base
npath_base = './npsave'
spath_base = './save'
fpath_base = './data'

#### file_name, sheet_name
fnames = ('A_file.xlsx','B_file.xlsx')
sheetA_names = ('sheet1','sheet2','sheet3','sheet4','sheet5','sheet6')
sheetB_names = ('sheet1','sheet2')

#### file_dir_base
fpath_bases = [os.path.join(fpath_base,fname) for fname in fnames]

#### dataframe read
df = pd.read_excel(fpath_bases[0],sheet_name=sheetA_names[0])
print(df)

#### dataframe save
sname = ('result_save.xlsx')
df.to_excel(os.path.join(spath_base,sname),sheet_name=sheetA_names[0])



----*REPL*[python]----
마감월      PO접수일        RFQ       주문번호  ... 공수1
0     2월 2020-01-21  ********   ********  ...  NaN  

..   ...        ...        ...        ...  ...  ...  

318  NaN        NaT   ********        NaN  ...  NaN  

[319 rows x 30 columns]

***Repl Closed***

2. dataframe index, columns, dtypes 등 정보 얻기 및 column 선택하기

관계형 데이터베이스 시스템(RDBMS, Relational Database Management System) 용어

 - database : table들이 저장된 DB 덩어리, excel 파일 자체 개념

 - table       : field로 구성된 record 집합, excel의 sheet 개념

 - field        : 동일 record 집합의 제목, excel의 column이며 1행 제목(label) 개념, pandas에서 column 개념

 - index      : field의 record 행번호, excel의 row 개념, pandas에서 index 개념

 - record     : field에 저장된 데이터, excel의 cell 개념이며 행(row),열(col) 즉 B2 cell 주소에 저장된 데이터

 

python dictionary, DB table, pandas dataframe 비교

dtype    dic    = {key0  :[data01,data02],       key1  :[data11,data12],        key2 :[data21,data22]}

DB        table = {field0:[record01,record02], field1:[record11,record12], field2:[record21,record22]}

pd dataframe = {col0  :list[str01, str02] ,       col1  :list[str01, str02],     col:list[str01, str02]}

 

# -*- coding: utf-8 -*-

import os
import datetime
import pandas as pd


#### dir base
npath_base = './npsave'
spath_base = './save'
fpath_base = './data'

#### file_name, sheet_name
fnames = ('A_file.xlsx','B_file.xlsx')
sheetA_names = ('sheet1','sheet2','sheet3','sheet4','sheet5','sheet6')
sheetB_names = ('sheet1','sheet2')

#### file_dir_base
fpath_bases = [os.path.join(fpath_base,fname) for fname in fnames]

#### dataframe read
df = pd.read_excel(fpath_bases[0],sheet_name=sheetA_names[0])


#### 1. dataframe index
print(df.index)

#### 2. dataframe columns(=index)
print(df.columns)

#### 3. dataframe dtypes for index
print(df.dtypes)


#### 4. dataframe ['PO접수일'] column 정보
print(df['PO접수일'])



----*REPL*[python]----
#### 1. print(df.index)
RangeIndex(start=0, stop=319, step=1)


#### 2. print(df.columns)
Index(['마감월', 'PO접수일', .... 'cost8'],
      dtype='object')


#### 3. print(df.dtypes)
마감월                    object
PO접수일          datetime64[ns]
RFQ                    object
....
구분                     object
수량                      int64
....
dtype: object


#### 4. print(df['PO접수일'])
0     2020-01-21
1     2020-01-21
         ...    
317          NaT
318          NaT
Name: PO접수일, Length: 319, dtype: datetime64[ns]

***Repl Closed***

3. dataframe index(=column,field) 다루기

# -*- coding: utf-8 -*-

import os
import datetime
import pandas as pd


#### dir base
npath_base = './npsave'
spath_base = './save'
fpath_base = './data'

#### file_name, sheet_name
fnames = ('A_file.xlsx','B_file.xlsx')
sheetA_names = ('sheet1','sheet2','sheet3','sheet4','sheet5','sheet6')
sheetB_names = ('sheet1','sheet2')

#### file_dir_base
fpath_bases = [os.path.join(fpath_base,fname) for fname in fnames]

#### dataframe read
df = pd.read_excel(fpath_bases[0],sheet_name=sheetA_names[0])

#### 1. index list 읽기
index_list = df.columns
print(index_list, type(index_list))

#### 2. df.loc 이용하여 index와 record 읽기
sel_table_loc = df.loc[:3,['마감월','PO접수일']]
print(sel_table_loc, type(sel_table_loc))

#### 3. df.iloc 이용하여 index와 record 읽기
sel_col = df.iloc[:,-8:-1]
print(sel_col, type(sel_col))
sel_row = df.iloc[0:3,:]
print(sel_row, type(sel_row))


----*REPL*[python]----
#### index list 읽기
Index(['마감월', 'PO접수일', ... 'cost6', 'cost7', 'cost8'],
      dtype='object') <class 'pandas.core.indexes.base.Index'>
      
      
#### 2. df.loc 이용하여 index와 record 읽기
  마감월      PO접수일
0  2월 2020-01-21
1  2월 2020-01-21
2  2월 2020-02-03
3  2월 2020-02-03 <class 'pandas.core.frame.DataFrame'>


#### 3. df.iloc 이용하여 index와 record 읽기
     cost1      cost2       cost3         cost4  cost5      cost6  cost7
0        NaN     1480.0     135000.0    15000.0   NaN       6700.0      NaN
1        NaN     1480.0     135000.0    15500.0   NaN       6700.0      NaN

..       ...        ...         ...        ...   ...       ...      ...

317      NaN        NaN         NaN        NaN   NaN       NaN      NaN
318      NaN        NaN         NaN        NaN   NaN       NaN      NaN


[319 rows x 7 columns] <class 'pandas.core.frame.DataFrame'>
  마감월      PO접수일        ...                                         cost8
0  2월 2020-01-21  2403463-1  5374765-1  ...  NaN  6700.0       NaN       NaN
1  2월 2020-01-21  2403463-1  5374756-1  ...  NaN  6700.0       NaN       NaN
2  2월 2020-02-03  2403467-1  5379114-1  ...  NaN  6700.0       NaN     130.0

[3 rows x 30 columns] <class 'pandas.core.frame.DataFrame'>


***Repl Closed***

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함