์ฝ”๋“œ - ํŒจ์บ  ์ˆ˜์—… ์ฝ”๋“œ ์ฐธ๊ณ  (ํŒจ์บ  ์ˆ˜์—… ์ •๋ฆฌ)

 

 

<์ด์ „ ๊ธ€>

https://silvercoding.tistory.com/43

 

[python ๊ธฐ์ดˆ] 11. ์˜ˆ์™ธ ์ข…๋ฅ˜์™€ ์ฒ˜๋ฆฌ , try , except , else, raise

์ฝ”๋“œ - ํŒจ์บ  ์ˆ˜์—… ์ฝ”๋“œ ์ฐธ๊ณ  (ํŒจ์บ  ์ˆ˜์—… ์ •๋ฆฌ) <์ด์ „ ๊ธ€> https://silvercoding.tistory.com/42 https://silvercoding.tistory.com/41 https://silvercoding.tistory.com/40 https://silvercoding.tistory.com/39..

silvercoding.tistory.com

 

 

 

import csv

์šฐ์„  ํŒŒ์ด์ฌ์—์„œ csv๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด import ํ•ด์ค€๋‹ค. 

 

 

 

 

- ์˜ˆ์ œ 1 

with open('./resource/sample1.csv', 'r') as f:
    reader = csv.reader(f)
    # next(reader) # Header ์Šคํ‚ต
    
    # ํ™•์ธ 
    print(reader)
    print(type(reader))
    print(dir(reader))
    print()

    for c in reader:
        print(c)  # ํ•˜๋‚˜์˜ row๊ฐ€ ๋ฆฌ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋‚˜์˜จ๋‹ค.

<_csv.reader object at 0x0000013CD5F8E868>
<class '_csv.reader'>
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'dialect', 'line_num']

 

['๋ฒˆํ˜ธ', '์ด๋ฆ„', '๊ฐ€์ž…์ผ์‹œ', '๋‚˜์ด']
['1', '๊น€์ •์ˆ˜', '2017-01-19 11:30:00', '25']
['2', '๋ฐ•๋ฏผ๊ตฌ', '2017-02-07 10:22:00', '35']
['3', '์ •์ˆœ๋ฏธ', '2017-01-22 09:10:00', '33']
['4', '๊น€์ •ํ˜„', '2017-02-22 14:09:00', '45']
['5', 'ํ™๋ฏธ์ง„', '2017-04-01 18:00:00', '17']
['6', '๊น€์ˆœ์ฒ ', '2017-05-14 22:33:07', '22']
['7', '์ด๋™์ฒ ', '2017-03-01 23:44:45', '27']
['8', '๋ฐ•์ง€์ˆ™', '2017-01-11 06:04:18', '30']
['9', '๊น€์€๋ฏธ', '2017-02-08 07:44:33', '51']
['10', '์žฅํ˜์ฒ ', '2017-12-01 13:01:11', '16']

์—ฌ๊ธฐ์„œ header๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์œ„์˜ ์ฃผ์„์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” next(reader)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

 

 

 

- ์˜ˆ์ œ 2 : delimiter 

vs๋กœ ์—ฌ๋‹ˆ๊นŒ ๊ธ€์”จ๊ฐ€ ๊นจ์ง€์ง€๋งŒ ์ฝค๋งˆ๊ฐ€ ์•„๋‹Œ |๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋Š” csvํŒŒ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ๋ถ„์ž๋ฅผ , ์—์„œ | ๋กœ ๋ฐ”๊พธ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. 

with open('./resource/sample2.csv', 'r') as f:
    reader = csv.reader(f, delimiter='|')
    # next(reader) # Header ์Šคํ‚ต

    # ํ™•์ธ 
    print(reader)
    print(type(reader))
    print(dir(reader))
    print()

    for c in reader:
        print(c)

<_csv.reader object at 0x0000013CD5EA5798>
<class '_csv.reader'>
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'dialect', 'line_num']

['๋ฒˆํ˜ธ', '์ด๋ฆ„', '๊ฐ€์ž…์ผ์‹œ', '๋‚˜์ด']
['1', '๊น€์ •์ˆ˜', '2017-01-19 11:30:00', '25']
['2', '๋ฐ•๋ฏผ๊ตฌ', '2017-02-07 10:22:00', '35']
['3', '์ •์ˆœ๋ฏธ', '2017-01-22 09:10:00', '33']
['4', '๊น€์ •ํ˜„', '2017-02-22 14:09:00', '45']
['5', 'ํ™๋ฏธ์ง„', '2017-04-01 18:00:00', '17']
['6', '๊น€์ˆœ์ฒ ', '2017-05-14 22:33:07', '22']
['7', '์ด๋™์ฒ ', '2017-03-01 23:44:45', '27']
['8', '๋ฐ•์ง€์ˆ™', '2017-01-11 06:04:18', '30']
['9', '๊น€์€๋ฏธ', '2017-02-08 07:44:33', '51']
['10', '์žฅํ˜์ฒ ', '2017-12-01 13:01:11', '16']

delimiter = '|' ๋ฅผ ์‚ฌ์šฉํ–ˆ๋”๋‹ˆ ์ž˜ ๋‚˜๋ˆ„์–ด์ง„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

- ์˜ˆ์ œ 3 : dictionary๋กœ ์ฝ์–ด์˜ค๊ธฐ => DictReader

with open('./resource/sample1.csv', 'r') as f:
    reader = csv.DictReader(f)

    for c in reader:
        for k, v in c.items():
            print(k, v)
        print("------------------")

๋ฒˆํ˜ธ 1
์ด๋ฆ„ ๊น€์ •์ˆ˜
๊ฐ€์ž…์ผ์‹œ 2017-01-19 11:30:00
๋‚˜์ด 25
------------------
๋ฒˆํ˜ธ 2
์ด๋ฆ„ ๋ฐ•๋ฏผ๊ตฌ
๊ฐ€์ž…์ผ์‹œ 2017-02-07 10:22:00
๋‚˜์ด 35
------------------
๋ฒˆํ˜ธ 3
์ด๋ฆ„ ์ •์ˆœ๋ฏธ
๊ฐ€์ž…์ผ์‹œ 2017-01-22 09:10:00
๋‚˜์ด 33
------------------
๋ฒˆํ˜ธ 4
์ด๋ฆ„ ๊น€์ •ํ˜„
๊ฐ€์ž…์ผ์‹œ 2017-02-22 14:09:00
๋‚˜์ด 45
------------------
๋ฒˆํ˜ธ 5
์ด๋ฆ„ ํ™๋ฏธ์ง„
๊ฐ€์ž…์ผ์‹œ 2017-04-01 18:00:00
๋‚˜์ด 17
------------------
๋ฒˆํ˜ธ 6
์ด๋ฆ„ ๊น€์ˆœ์ฒ 
๊ฐ€์ž…์ผ์‹œ 2017-05-14 22:33:07
๋‚˜์ด 22
------------------
๋ฒˆํ˜ธ 7
์ด๋ฆ„ ์ด๋™์ฒ 
๊ฐ€์ž…์ผ์‹œ 2017-03-01 23:44:45
๋‚˜์ด 27
------------------
๋ฒˆํ˜ธ 8
์ด๋ฆ„ ๋ฐ•์ง€์ˆ™
๊ฐ€์ž…์ผ์‹œ 2017-01-11 06:04:18
๋‚˜์ด 30
------------------
๋ฒˆํ˜ธ 9
์ด๋ฆ„ ๊น€์€๋ฏธ
๊ฐ€์ž…์ผ์‹œ 2017-02-08 07:44:33
๋‚˜์ด 51
------------------

DictReader๋ฅผ ํ†ตํ•˜์—ฌ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ์ฝ์–ด์˜ค๋ฉด , 

OrderedDict([('๋ฒˆํ˜ธ', '1'), ('์ด๋ฆ„', '๊น€์ •์ˆ˜'), ('๊ฐ€์ž…์ผ์‹œ', '2017-01-19 11:30:00'), ('๋‚˜์ด', '25')])

์ด๋Ÿฐ ์‹์œผ๋กœ ํ•˜๋‚˜์˜ ์ค„๋งˆ๋‹ค OrderedDict๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ key์™€ value๋ฅผ ๋ฝ‘์•„๋‚ด์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

 

- ์˜ˆ์ œ 4 : writerow

w = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]]

with open('./resource/sample3.csv', 'w', newline='') as f:
    wt = csv.writer(f)

    for v in w:
        wt.writerow(v)  # ํ•˜๋‚˜ํ•˜๋‚˜ ๊ฒ€์ˆ˜ํ•ด์„œ ์“ธ ๋–„ (if๊ฐ™์€ ์กฐ๊ฑด์ด ๋“ค์–ด๊ฐˆ ๋•Œ )

writerow๋กœ ํ•œ์ค„์”ฉ ๊ฒ€์ˆ˜ํ•ด๊ฐ€๋ฉฐ ์ž‘์„ฑ์„ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

- ์˜ˆ์ œ 5 : writerows 

with open('./resource/sample4.csv', 'w', newline='') as f:
    wt = csv.writer(f)
    wt.writerows(w)  # ์•„์— ํ•œ๋ฒˆ์— ์“ฐ๋Š” ๊ฒƒ

ํ•œ๋ฒˆ์— ์“ฐ๋Š” writerowsํ•จ์ˆ˜๋„ ์กด์žฌํ•œ๋‹ค. for๋ฌธ์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. 

 

 

 

- ์˜ˆ์ œ 6 : excel

* XSL, XLSX 

: openpyxl, xlswriter, xlrd, xlwt, xlutils 

: pandas ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉ (openpyxl, xlrd) 

 

* ์„ค์น˜ (pandas, openpyxl, xlrd) 

- pip install xlrd

- pip install openpyxl

- pip install pandas 

 

 

* ๋ถˆ๋Ÿฌ์˜ค๊ธฐ 

import pandas as pd 

xlsx = pd.read_excel('./resource/sample.xlsx')

pandas๋ฅผ importํ•˜๊ณ , read_excel์„ ์ด์šฉํ•˜์—ฌ ์—‘์…€ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™€ ์ค€๋‹ค. 

 

 

* ์ƒ์œ„ ๋ฐ์ดํ„ฐ ํ™•์ธ 

print(xlsx.head())

  Sap Co.      ๋Œ€๋ฆฌ์  ์˜์—…์‚ฌ์›       ์ „์›”       ๊ธˆ์›”  TEAM  ์ด ํŒ๋งค์ˆ˜๋Ÿ‰
0  KI1316  ๊ฒฝ๊ธฐ์ˆ˜์›๋Œ€๋ฆฌ์   ์ด๊ธฐ์ •  1720000  2952000     1     123
1  KI1451  ์ถฉ์ฒญํ™์„ฑ๋Œ€๋ฆฌ์   ์ •๋ฏธ์ง„  4080000  2706000     2     220
2  KI1534  ๊ฒฝ๊ธฐํ™”์„ฑ๋Œ€๋ฆฌ์   ๊ฒฝ์ธ์„    600000  2214000     1     320
3  KI1636  ๊ฐ•์›์†์ดˆ๋Œ€๋ฆฌ์   ์ด๋™๊ถŒ  3720000  2870000     3     110
4  KI1735  ๊ฒฝ๊ธฐ์•ˆ์–‘๋Œ€๋ฆฌ์   ๊ฐ•์ค€์„  4800000  2296000     1     134

๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์žฅ ์œ„์˜ 5๊ฐœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜จ๋‹ค. 

 

 

* ํ•˜์œ„ ๋ฐ์ดํ„ฐ ํ™•์ธ 

print(xlsx.tail())

   Sap Co.       ๋Œ€๋ฆฌ์  ์˜์—…์‚ฌ์›       ์ „์›”       ๊ธˆ์›”  TEAM  ์ด ํŒ๋งค์ˆ˜๋Ÿ‰
15  KI2870  ๊ฒฝ๊ธฐ๊ตฌ๋ฆฌ์‹œ๋Œ€๋ฆฌ์   ๋ฐ•์ง„ํ˜•  6000000  3400000     2     143
16  KI2910   ๊ฐ•์›์ถ˜์ฒœ๋Œ€๋ฆฌ์   ๊น€์€ํ–ฅ  4800000  4896000     1     176
17  KI3030   ๊ฐ•์›์˜๋™๋Œ€๋ฆฌ์   ์ „์ˆ˜์ฐฝ  4560000  3128000     2      98
18  KI3131   ๊ฒฝ๊ธฐํ•˜๋‚จ๋Œ€๋ฆฌ์   ๊น€๋ฏผ์ •  2750000  7268000     3     293
19  KI3252   ๊ฐ•์›ํฌ์ฒœ๋Œ€๋ฆฌ์   ์„œ๊ฐ€์€  2420000  4740000     4     240

ํ•˜์œ„ 5๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. 

 

 

* ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ 

print(xlsx.shape) # ํ–‰, ์—ด

 (20, 7) 

shape๋ฅผ ์ด์šฉํ•˜์—ฌ ํ–‰๊ณผ ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

 

* ์—‘์…€ or CSV ๋‹ค์‹œ ์“ฐ๊ธฐ 

xlsx.to_excel('./resource/result.xlsx', index=False)
xlsx.to_csv('./resource/result.csv', index=False)

์ด๋ ‡๊ฒŒ to_excel๊ณผ to_csv๋ฅผ ์ด์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

 

 

 

+ Recent posts