Ming's blog

실전 데이터 분석2_(파일다루기, 데이터 구조 다루기, 그래프 다루기) 본문

프로그래밍 기본 문법/Python

실전 데이터 분석2_(파일다루기, 데이터 구조 다루기, 그래프 다루기)

H._.ming 2020. 6. 25. 23:51
반응형

1. 파일 다루기

1) 파일 열기/닫기

file = open('data.txt') #열기
content = file.read() #읽기
file.close() #닫기

2) 파일 자동으로 닫기

with open('data.txt') as file:
    content=file.read() 
    # 자동으로 닫힘
print(content)
>>> Hello
        My name is Min

3) 줄 단위로 읽기

contents=[]
with open('data.txt') as file:
    for line in file:
        contents.append(line.strip())  #앞 뒤 공백 제거
print(contents)
>>>['Hello', 'My name is Min']

4) 파일의 모드

# 쓰기 모드로 파일 열기
with open('data.txt','w') as file:
    file.write('Hello')

2. 데이터 구조 다루기

1) 튜플

* 튜플과 리스트

공통점 : 순서가 있는 원소들의 집합

차이점 : 튜플은 원소 수정 불가

#튜플
colors=('빨','주','초') #원소의 값 수정 불가능
#리스트
colors_list=['빨','주','초'] 

## 리스트 변형
colors_list[2]='노'
print(colors_list)
>>>['빨', '주', '노']
colors_list.append('초')
print(colors_list)
>>>['빨', '주', '노', '초']

## 튜플 변형
colors[2]='노'  #에러
colors.append('노') #에러
colors=('빨','주','노') #새로운 튜플로 만들면 수정 가능

2) 리스트로 리스트 만들기

rainbow=['red','orange','yellow']
first_letters=[]
for word in rainbow:
    first_letters.append(word[0])  #첫 글자만 추출
print(first_letters)
>>>['r', 'o', 'y']

* 한 줄로 나타내기

#fancy code
first_letters=[word[0] for word in rainbow]
print(first_letters)
numbers=[2,4,6,8,10]
odds=[]
for num in numbers:
    odds.append(num-1)
print(odds)
>>>[1, 3, 5, 7, 9]

#한 줄로 나타내기
odds=[num-1 for num in numbers]
print(odds)
>>>[1, 3, 5, 7, 9]

3) 특정 원소 걸러내기

numbers=[1,2,3,4,5,6,7,8,9,10]
even=[]
for num in numbers:
    if num%2==0:  #짝수만 추출
        even.append(num)
print(even)
>>>[2, 4, 6, 8, 10] 

#한 줄로 나타내기
even=[num for num in numbers if num%2 == 0]
print(even)
>>>[2, 4, 6, 8, 10] 

4) 데이터 정렬하기

numbers=[5,8,7,6,-6,0,5,8,-8]
sort_num=sorted(numbers,key=abs) #절댓값 기준으로 정렬
print(sort_num)
>>>[0, 5, 5, 6, -6, 7, 8, 8, -8]
rainbow=['red','orange','yellow']
sort_rainbow=sorted(rainbow) #사전 순으로 정렬
print(sort_rainbow)
>>>['orange', 'red', 'yellow']
def reverse(word):
    return str(reversed(word))
reversed_rainbow=sorted(rainbow,key=reverse) # 마지막 글자 기준 정렬
print(reversed_rainbow)
>>>['red', 'orange', 'yellow']

3. 그래프 다루기

matplotlib

# matplotlib의 일부인 pyplot 라이브러리를 불러옵니다.
import matplotlib.pyplot as plt

# 월별 평균 기온을 선언합니다. 
years = [2013, 2014, 2015, 2016, 2017]
temperatures = [7,14,21,28,25]

#막대 차트를 출력합니다.   
def draw_graph():
    # 막대 그래프의 막대 위치를 결정하는 pos를 선언합니다.
    pos = range(len(years))  # [0, 1, 2, 3, 4]
    
    # 높이가 온도인 막대 그래프를 그립니다.
    # 각 막대를 가운데 정렬합니다.
    plt.bar(pos, temperatures, align='center')
    
    # 각 막대에 해당되는 연도를 표기합니다.
    plt.xticks(pos, years)
    
    # 그래프를 표시합니다.
    plt.savefig('graph.png')
    plt.show()
draw_graph()

반응형
Comments