728x90
반응형
dataAnalysis
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')
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 파일을 읽고 쓰기 위한 라이브러리 두 개를 설치하는 명령어입니다. 각각의 라이브러리 기능은 다음과 같습니다.
- xlrd: Excel 파일(주로 .xls)을 읽는 데 사용하는 라이브러리입니다. 이 라이브러리는 이전에는 .xlsx 파일도 지원했지만, 버전 2.0.0부터는 .xls 파일만 지원합니다. .xlsx 파일을 읽으려면 openpyxl과 같은 대체 라이브러리를 사용해야 합니다.
- 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 |
댓글