Python - 04

월요일좋아·2022년 12월 6일
0

Python

목록 보기
4/8

CSV

파일 오픈, 파일 쓰기 함수

csv/usecsv.py

# csv/usecsv.py


# 파일 오픈 함수
import csv, os, re

def opencsv(filename):  # 파일 읽어와서 리스트로 리턴해주는 함수
  f = open(filename, 'r')
  reader = csv.reader(f)
  output = []
  for i in reader:
    output.append(i)
  return output

# 파일 쓰기 함수
def writecsv(filename, the_list):
  # 파일 읽을때 사용 : with open
  with open(filename, 'w', newline='') as f:
    a = csv.writer(f, delimiter=',')  # 구분자
    a.writerows(the_list)  # 한 줄씩 저장

# 문자 리스트 -> 실수 리스트 변환
# a = [['1','2','3'],['2','3',5']]
# b = switch(a)
# b = [[1.0,2.0,3.0],[2.0,3.0,5.0]]
def switch(listName):
  for i in listName:
    for j in i:
      try:
        i[i.index(j)] = float(re.sub(',', '', j))  # 콤마(,) 를 빈 값( ) 으로 변환
      except:
        pass
  return listName

파일 읽기 및 쓰기

csv/ex1.py

# csv/ex1.py

import os, re
import usecsv as us

# os.chdir(r'C:\Python\crawling\csv\data')
os.chdir(r'.\data')

total = us.opencsv('popSeoul.csv')
for i in total[:5]:
  print(i)

newPop = us.switch(total)
for i in newPop[:5]:
  foreign = 0
  try:
    foreign = round(i[2] / (i[1] + i[2]) * 100, 1)
    print(i[0], foreign)
  except:
    pass

new = [['구','한국인','외국인','외국인 비율(%)']]

for i in newPop:
  try:
    foreign = round(i[2] / (i[1] + i[2]) * 100, 1)
    if foreign > 3:
      # new.append(i[0], i[1], i[2], foreign)
      new.append([i[0], i[1], i[2], foreign])
  except:
    pass

us.writecsv('nowPop2.csv', new)


문제 1.

ex3.py
부산의 크기가 150이 넘거나 5억 이상인 리스트 저장
-> over150+high50000.csv

csv/ex3.py

# csv/ex3.py
import os, re
import usecsv as uc

os.chdir(r'.\data')

apt = uc.switch(uc.opencsv('apt_202210.csv'))

new_list = []
for i in apt:
  try:
    # 부산의 크기가 150이 넘거나 5억 이상인 리스트 저장
    if re.match('부산광역시', i[0]):
      if i[5] >= 150:
        new_list.append([i[0], i[4], i[-4]])
      elif i[-7] >= 50000:
        new_list.append([i[0], i[4], i[-4]])
  except:
    pass

print(len(new_list))
uc.writecsv('over120_lower300003.csv', new_list)

파이썬 빅데이터 라이브러리

1. NumPy

https://numpy.org/

2. 판다스

3. 맷플롯립 (그래프)



0개의 댓글