728x90

pandas란 엑셀처럼 테이블(표)로 된 데이터를 다룰 때 아주 유용한 도구이다.

판다스는 데이터 분석용 언어인 R의 data.frame 구조를 본뜬 DataFrame이라는 구조를 사용하기 때문에, R의 data.frame의 기능들을 대부분 사용할 수 있도록 만들어졌다.

index 를 제외한 각 열(Column)을 Series라고 부른다.

각 열 단위(Series)가 모여 하나의 표를 DataFrame 이라고 부른다.

 

 

아래 코드는 jupyter notebook 환경에서 실습하면 된다.

https://link2me.tistory.com/2094  게시글에 라이브러리 설치와 Jupyter notebook 설치하는 방법이 기술되어 있다.

 

index 를 내가 원하는 형식으로 변경할 수 있다.

import pandas as pd
# Series 는 인덱스와 값으로 구성된다.
 
array = pd.Series(['사과''바나나''당근'], index=['a','b','c'])
 
print(array)
print()
 
# index 출력하기
for i in array.index:
    print(i)
    
print()
 
# value 출력하기
for val in array.values:
    print(val)

 

import pandas as pd
data = {
    'a''사과',
    'b''바나나',
    'c''당근'
}
 
# Dict 자료형을 Series로 바꾸기
array = pd.Series(data)
 
print(array)
 

 

import pandas as pd
 
# 데이터 프레임 : 다수의 시리즈(Series)를 모아 처리하기 위한 목적으로 사용
# Dict 자료형
word_dict = {
    'Apple''사과',
    'Banana''바나나',
    'Carrot''당근'
}
 
frequency_dict = {
    'Apple'3,
    'Banana'5,
    'Carrot'7
}
 
word = pd.Series(word_dict)
frequency = pd.Series(frequency_dict)
 
# name : value
summary = pd.DataFrame({
    'word': word,
    'frequency': frequency
})
 
display(summary)
 
 

 

import pandas as pd
 
# Series 끼리 사칙연산이 가능하다. 사칙연산을 한 결과는 또 다른 Series이다.
 
word_dict = {
    'Apple''사과',
    'Banana''바나나',
    'Carrot''당근'
}
 
frequency_dict = {
    'Apple'3,
    'Banana'5,
    'Carrot'7
}
 
importance_dict = {
    'Apple'3,
    'Banana'2,
    'Carrot'1
}
 
word = pd.Series(word_dict)
frequency = pd.Series(frequency_dict)
importance = pd.Series(importance_dict)
 
summary = pd.DataFrame({
    'word': word,
    'frequency': frequency,
    'importance': importance
})
 
 
score = summary['frequency'* summary['importance']
summary['score'= score
 
display(summary)
 

 

DataFrame 의  칼럼(열) 순서를 바꿔보고 싶다면....

import pandas as pd
 
# 데이터 프레임의 슬라이싱
 
word_dict = {
    'Apple''사과',
    'Banana''바나나',
    'Carrot''당근',
    'Durian''두리안'
}
 
frequency_dict = {
    'Apple'3,
    'Banana'5,
    'Carrot'7,
    'Durian'2
}
 
importance_dict = {
    'Apple'3,
    'Banana'2,
    'Carrot'1,
    'Durian'1
}
 
word = pd.Series(word_dict)
frequency = pd.Series(frequency_dict)
importance = pd.Series(importance_dict)
 
summary = pd.DataFrame({
    'word': word,
    'frequency': frequency,
    'importance': importance
})
 
display(summary)
 
# DataFrame 의 칼럼(열) 순서를 바꿔보기
df = pd.DataFrame(summary, columns=['word''importance''frequency'])
display(df)
 
# 이름을 기준으로 슬라이싱
display(summary.loc['Banana':'Carrot''importance':])
 
 
# 인덱스를 기준으로 슬라이싱
display(summary.iloc[1:32:])
 

 

 

# 데이터 프레임의 연산
import pandas as pd
 
word_dict = {
    'Apple''사과',
    'Banana''바나나',
    'Carrot''당근',
    'Durian''두리안'
}
 
frequency_dict = {
    'Apple'3,
    'Banana'5,
    'Carrot'7,
    'Durian'2
}
 
importance_dict = {
    'Apple'3,
    'Banana'2,
    'Carrot'1,
    'Durian'1
}
 
word = pd.Series(word_dict)
frequency = pd.Series(frequency_dict)
importance = pd.Series(importance_dict)
 
summary = pd.DataFrame({
    'word': word,
    'frequency': frequency,
    'importance': importance
})
 
display(summary)
 
summary.loc['Apple''importance'= 9 # 데이터의 변경
summary.loc['Elderberry'= ['엘더베리'53# 새 데이터 삽입
 
display(summary)
 
print()
# 끝에서 마지막 2줄을 불러온다. tail() 로 하면 마지막 5개를 불러온다.
display(summary.tail(2))
 
print()
# 맨 처음부터 2줄을 불러온다.
display(summary.head(2))
 
# 데이터의 대략적인 통계적 정보 요약을 보여준다.
display(summary.describe())
 
 

 

# 엑셀로 내보내기/불러오기
import pandas as pd
 
word_dict = {
    'Apple''사과',
    'Banana''바나나',
    'Carrot''당근'
}
 
frequency_dict = {
    'Apple'3,
    'Banana'5,
    'Carrot'7
}
 
word = pd.Series(word_dict)
frequency = pd.Series(frequency_dict)
 
summary = pd.DataFrame({
    'word': word,
    'frequency': frequency
})
 
 
summary.to_csv("summary.csv", encoding="utf-8-sig")
# csv 파일 형태로 저장한 데이터는 텍스트 파일 형태
 
# csv 파일 엑셀 읽어오기 및 화면 출력
saved = pd.read_csv("summary.csv", index_col=0)
display(saved)
 
 

 

 

728x90

'파이썬 > 데이터 분석' 카테고리의 다른 글

MariaDB to Python Pandas DataFrame  (0) 2022.01.21
Python Pandas CSV 읽고 DB 저장  (0) 2022.01.19
Pycharm과 Jupyter Notebook 연결하기  (0) 2022.01.12
블로그 이미지

Link2Me

,