본문 바로가기
PROGRAMING📚/Python📑

dataAnalysis

Ta이니 2024. 12. 1.
728x90
반응형

dataAnalysis

singer1.csv

import csv
import glob
import os

file_list = glob.glob(os.path.join('./source/', '*.csv'))
firstYN = True

for input_file in file_list:
  with open(input_file, "r") as inFp:
    with open('../source/singer1.csv', "a", newline='') as outFp:
      csvReader = csv.reader(inFp)
      csvWriter = csvWriter(outFp)
      header_list = next(csvReader)
      if firstYN == True:
        csvWriter.writerow(header_list)
        firstYN = False

      for row_list in csvReader:
        csvWriter.writerow(row_list)
print('Save. OK!')
def printList(pList):
  for data in pList:
    print(data, end='\t')
  print()

with open('../source/singer1.csv', 'r') as inFp:
  # inStr = inFp.readline()
  # print(inStr, end="")
  # inStr = inFp.readline()
  # print(inStr, end="")
  header = inFp.readline()
  header = header.strip()
  header_list = header.split(',')
  printList(header_list)
  for inStr in inFp:
    inStr = inStr.strip()
    row_list = inStr.split(',')
    printList(row_list)

DataWrite - File Save

def printList(pList):
  for data in pList:
    print(data, end='\t')
  print()

with open('../../source/singer1.csv', 'r') as inFp:
  with open('../../singer1_copy.csv', 'w') as outFp:
    header = inFp.readline()
    header = header.strip()
    header_list = header.split(',')
    outFp.write(','.join(map(str, header_list))+'\n')

    for inStr in inFp:
      inStr = inStr.strip()
      row_list = inStr.split(',')
      outFp.write(','.join(map(str, row_list))+'\n')
  print('Save Finished')

singer2.csv

 

with open('../../source/singer2.csv', "r") as inFp:
  header = inFp.readline()
  header = header.strip()
  header_list = header.split(',')
  print(header_list[1], header_list[6])
  for inStr in inFp:
    inStr = inStr.strip()
    findIdx = inStr.find('"')
    if(findIdx == -1):
      row_list = inStr.split(',')
      youtube = int(row_list[6])
      youtube = int(youtube / 10000)
      print(row_list[1], str(youtube) + "만", end="\t")
    else:
      row_list = inStr.split(',')
      youtube = inStr[inStr.find("\""):]
      print(row_list[1], youtube+"만")
    print()

csv를 이용한 데이터 불러오기

import csv
with open('../../source/singer2.csv', "r") as inFp:
  csv_reader = csv.reader(inFp)
  header = next(csv_reader)
  print(header[1], header[6])
  for row_list in csv_reader:
    utube = row_list[6]
    print(row_list[1], row_list[6], end='\t')
    print()

만 단위로 자르기

import csv
with open('../../source/singer2.csv', "r") as inFp:
  csv_reader = csv.reader(inFp)
  header = next(csv_reader)
  print(header[1], header[6])
  for row_list in csv_reader:
    utube = int(row_list[6].replace(',',''))
    utube = int(utube/10000)
    print(row_list[1], str(utube)+"만", end='\t')
    print()
import csv

with open("../../source/singerA.csv", "r") as inFpA :
    with open("../../source/singerB.csv", "r") as inFpB:
        with open("../../source/singerSum.csv", "w", newline='') as outFp:
            csvReaderA = csv.reader(inFpA)  # csv읽어드린 집합 객체
            csvReaderB = csv.reader(inFpB)  # csv읽어드린 집합 객체
            csvWriter = csv.writer(outFp)   # csv쓰기위한 집합 객체
            header_list = next(csvReaderA)  # 첫번째 라인을 읽음
            header_list = next(csvReaderB)  #위라인과 동일한 기능을 중복적용함.
            csvWriter.writerow(header_list)

            for row_list in csvReaderA:
                csvWriter.writerow(row_list)
            for row_list in csvReaderB:
                csvWriter.writerow(row_list)

print('Save. OK~')

tkinter를 사용해서 데이터 테이블 출력하기

from tkinter import *
import csv

## 함수 선언 부
def makeEmptySheet(r, c):
  retList = []
  for i in range(0, r):
    tmpList = []
    for k in range(0, c):
      ent = Entry(window, text='', width=10)
      ent.grid(row=i, column=k)
      tmpList.append(ent)
    retList.append(tmpList)
  return retList

## 전역 변수부
csvList = []
rowNum, colNum = 0, 0
workSheet = []

## 메인 코드부
window = Tk()

with open("../../source/singer1.csv", "r") as inFp:
  csvReader = csv.reader(inFp)  # csv파일을 읽어드린 집합 객체
  header_list = next(csvReader)  # 한줄 읽음
  print(">>>", type(header_list))
  csvList.append(header_list)  # 제목 붙이기
  for row_list in csvReader:  # 나머지 데이터 읽어서 추가하기
    csvList.append(row_list)

rowNum = len(csvList)  # 2차원  list 의 전체 행의 길이
colNum = len(csvList[0])  # 첫번째 행의 열의 길이를 구함
workSheet = makeEmptySheet(rowNum, colNum)

idx = 6  # 평균 키의 인덱스
for i in range(0, rowNum):  # 워크시트에 리스트값 채우기. (= 각 빈 셀에 값 넣기)
  for k in range(0, colNum):
    # if (csvList[i][idx].isnumeric()):   # 교재에 있는 코드인데 결과값 다름.
    #   if (int(csvList[i][idx]) >= 167):
    #     ent = workSheet[i][k]
    #     ent.configure(bg='yellow')
    if (i > 0): #header를 제외하기 위해서 0보다 큰 i 의 값을 가져옴
      tmp = float(csvList[i][idx])
      if (tmp >= 167):
        ent = workSheet[i][k]
        # 키가 167 이상인 경우, 글씨 = red, 배경 = Yellow 적용
        ent.configure(bg='yellow', fg='red')
    workSheet[i][k].insert(0, csvList[i][k])

window.mainloop()

이미지 raw 파일 흑백으로 변환하기

 

다음 코드는 이미지 파일(raw) 파일을 csv로 변경했다가 다시 csv 파일을 raw 파일로 저장을 해주는 코드이다

## RAW --> CSV로 저장
rawFp = open(inRawName, 'rb') # rb: 이진 파일을 읽는 모드
csvFp = open(csvName,'w', newline='')
csvWriter = csv.writer(csvFp)
csvWriter.writerow(['행', '열', '픽셀 값'])
for i in range(row) :
    for k in range(col) :
        tmp = rawFp.read(1) # 1 픽셀씩 읽어 드림
        value = int(ord(tmp))  # 1픽셀에 대한 value
        print(tmp, '/', value)
        row_list = [i, k, value]
        csvWriter.writerow(row_list)
rawFp.close()
csvFp.close()
## CSV 파일을 흑백으로
csvFp = open(csvName,'r')
csvReader = csv.reader(csvFp)
headerList = next(csvReader)
csvList = []
for cList in csvReader :
    value = int(cList[2]) #[i, k, value]
    if value > 128 :
        value = 255 # 백으로만 표현
    else :
        value = 0   # 흑으로만 표현
    csvList.append([cList[0], cList[1], value])
## CSV --> RAW
rawFp = open(outRawName, 'wb') # write binary
for cList in csvList :
        x, y, value = map(int , cList)
        rawFp.write(struct.pack('B', value))
rawFp.close()
  • csv_rew 전체 코드
  • import csv import struct ## 전역 변수부 inRawName = '../../source/cat256.raw' # 원본 csvName = '../../source/cat256.csv' # csv outRawName = '../../source/cat256_out.raw' # 흑백 row, col = 256, 256 ## 메인 코드부 ## RAW --> CSV로 저장 rawFp = open(inRawName, 'rb') # rb: 이진 파일을 읽는 모드 csvFp = open(csvName,'w', newline='') csvWriter = csv.writer(csvFp) csvWriter.writerow(['행', '열', '픽셀 값']) for i in range(row) : for k in range(col) : tmp = rawFp.read(1) # 1 픽셀씩 읽어 드림 value = int(ord(tmp)) # 1픽셀에 대한 value print(tmp, '/', value) row_list = [i, k, value] csvWriter.writerow(row_list) rawFp.close() csvFp.close() ## CSV 파일을 흑백으로 csvFp = open(csvName,'r') csvReader = csv.reader(csvFp) #csv는 항상 제목을 가지고 있어야함. 하지만 여기서는 사용하지 않음 headerList = next(csvReader) csvList = [] for cList in csvReader : value = int(cList[2]) #[i, k, value] if value > 128 : value = 255 # 백으로만 표현 else : value = 0 # 흑으로만 표현 csvList.append([cList[0], cList[1], value]) ## CSV --> RAW rawFp = open(outRawName, 'wb') # write binary for cList in csvList : x, y, value = map(int , cList) rawFp.write(struct.pack('B', value)) rawFp.close() print('Save. OK~')

pip ( python install package )

pip install xlrd xlwt 명령은 파이썬에서 Excel 파일을 읽고 쓰기 위한 라이브러리 두 개를 설치하는 명령어입니다. 각각의 라이브러리 기능은 다음과 같습니다.

  1. xlrd: Excel 파일(주로 .xls)을 읽는 데 사용하는 라이브러리입니다. 이 라이브러리는 이전에는 .xlsx 파일도 지원했지만, 버전 2.0.0부터는 .xls 파일만 지원합니다. .xlsx 파일을 읽으려면 openpyxl과 같은 대체 라이브러리를 사용해야 합니다.
  2. xlwt: Excel 파일을 작성하거나 수정하는 데 사용하는 라이브러리입니다. 주로 .xls 파일을 생성할 때 사용되며, .xlsx 파일은 지원하지 않습니다.

설치 방법

이 두 라이브러리를 설치하려면 다음 명령어를 터미널에 입력합니다:

pip install xlrd xlwt

사용 예시

  • xlrd로 Excel 파일 읽기:
  • import xlrd # Excel 파일 열기 workbook = xlrd.open_workbook('sample.xls') sheet = workbook.sheet_by_index(0) # 첫 번째 행, 첫 번째 열의 데이터 읽기 value = sheet.cell_value(0, 0) print(value)
  • xlwt로 Excel 파일 쓰기:
  • import xlwt # 새 워크북과 시트 생성 workbook = xlwt.Workbook() sheet = workbook.add_sheet('Sheet1') # 데이터 쓰기 sheet.write(0, 0, 'Hello World!') # 파일 저장 workbook.save('output.xls')

xlrd와 xlwt는 .xls 형식만 지원하기 때문에, .xlsx 형식을 다루려면 openpyxl이나 pandas 등의 다른 라이브러리도 고려할 수 있습니다.

pip install xlrd xlwt

728x90
반응형

'PROGRAMING📚 > Python📑' 카테고리의 다른 글

thinter-데이터 불러오기  (0) 2024.12.03
Python - Database  (1) 2024.12.02
RawImageViewer / NoteFile  (0) 2024.11.30
python - windowLocationInfo  (2) 2024.11.29
Excel 이용해서 파일 불러오기  (1) 2024.11.28

댓글