donut

'Module/Pandas'에 해당되는 글 3건

  1. 파이썬 3차원 배열 다루기
  2. Python Pandas DataFrame
  3. Python pandas series

파이썬 3차원 배열 다루기

Module/Pandas
numpystudy

Numpy Study

3차원 넘피 배열에 대한 공부 기록 입니다.

In [30]:
#모듈선언
import numpy as np
In [31]:
#3차원 배열 선언
test1 = np.array([[[0,1,2],[3,4,5],[6,7,8]],
                  [[9,10,11],[12,13,14],[15,16,17]],
                  [[18,19,20],[21,22,23],[24,25,26]]])
In [32]:
#데이터확인
test1
Out[32]:
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]],

       [[18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]]])
In [33]:
#데이터 길이, 차원, 갯수(크기)확인
print(test1.shape)
print(test1.ndim)
print(test1.size)
(3, 3, 3)
3
27
In [34]:
test1.reshape(9,3)
Out[34]:
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11],
       [12, 13, 14],
       [15, 16, 17],
       [18, 19, 20],
       [21, 22, 23],
       [24, 25, 26]])
In [35]:
#3차원의 배열을 1차원으로 재배치
test1.reshape(27,)
Out[35]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26])
In [36]:
#3차원의 배열을 2차원으로 재배치
test1.reshape(3,9)
Out[36]:
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8],
       [ 9, 10, 11, 12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23, 24, 25, 26]])
In [37]:
#3차원의 배열을 재배치
test1.reshape(3,1,9)
Out[37]:
array([[[ 0,  1,  2,  3,  4,  5,  6,  7,  8]],

       [[ 9, 10, 11, 12, 13, 14, 15, 16, 17]],

       [[18, 19, 20, 21, 22, 23, 24, 25, 26]]])
In [38]:
#3차원의 배열을 1차원으로 재배치
test1.flatten()
Out[38]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26])
In [ ]:
 

'Module > Pandas' 카테고리의 다른 글

Python Pandas DataFrame  (0) 2020.07.19
Python pandas series  (0) 2020.07.19

Python Pandas DataFrame

Module/Pandas

 

 

 

안녕하세요. 오늘은 지난시간 포스팅했던 시리즈에 이어서 판다스를 이루는 자료구조 두번째 DataFrame에 대해 포스팅하겠습니다.

 

pandas

구조화된 데이터의 처리를 지원하는 파이썬 라이브러리.
파이썬으로 엑셀처럼 데이터를 다룰 수 있음.

pandas자료구조

Series와 DataFrame
DataFrame는 엑셀과 비슷한데 데이터의 형식, 행과 열이 존재함 열 : column 이라고 부름 행 : row, index라고 부름

접근순서는 열 > 행

 

DataFrame 생성

데이터의 종류

csv, xlsx파일
리스트, 딕셔너리 등등

 

DataFrame 생성

파일로 데이터 프레임을 가져올 경우에는
인덱스를 변환 해준다는 등의 데이터 전처리가 꼭 필요함.

In [4]:
#필요한 모듈 세팅
from pandas import DataFrame
from pandas import read_csv
from pandas import ExcelFile
In [6]:
#csv파일로 생성하기
csvtest = read_csv('/Users/donut/tstory/TestCsvFile.csv')
csvtest
Out[6]:
  Unnamed: 0 콜라 커피 사이다 라면 Unnamed: 5 Unnamed: 6
0 20 30 40 30 NaN NaN
1 영양도 20 20 40 40 NaN NaN
2 가격 30 22 20 10 NaN NaN
In [10]:
#엑셀파일로 생성하기
#엑셀파일로 가져올 경우, 가져오기원하는 시트를 파싱 해서 불어와야함
xlsxtest = ExcelFile('/Users/donut/tstory/TestXlsxFile.xlsx')
xlsxtest
Out[10]:
<pandas.io.excel._base.ExcelFile at 0x7fdc212a78d0>
In [11]:
df = xlsxtest.parse(xlsxtest.sheet_names[0])
df
Out[11]:
  Unnamed: 0 콜라 커피 사이다 라면
0 20 30 40 30
1 영양도 20 20 40 40
2 가격 30 22 20 10
In [66]:
# 리스트로 생성하기
testlist = [
    [1, '남자', 40, None, 64],
    [2, '여자', 30, 90, 62, 72],
    [1, '남자', 92, 70, None, None],
    [3, '여자', 63, 60, 31, 70],
    [4, '남자', 120, 50, None, 88]
]

df = DataFrame(testlist)
df
Out[66]:
  0 1 2 3 4 5
0 1 남자 40 NaN 64.0 NaN
1 2 여자 30 90.0 62.0 72.0
2 1 남자 92 70.0 NaN NaN
3 3 여자 63 60.0 31.0 70.0
4 4 남자 120 50.0 NaN 88.0
 

DataFrame 다루기

In [67]:
#데이터 프레임의 컬럼과 인덱스를 바꿔주기
df.columns = ['학년', '성별', '국어', '영어', '수학', '과학']
df.index = ['짱구', '맹구', '사탕', '도적', '검사']
df
Out[67]:
  학년 성별 국어 영어 수학 과학
짱구 1 남자 40 NaN 64.0 NaN
맹구 2 여자 30 90.0 62.0 72.0
사탕 1 남자 92 70.0 NaN NaN
도적 3 여자 63 60.0 31.0 70.0
검사 4 남자 120 50.0 NaN 88.0
In [68]:
#데이터프레임 크기 확인
#(행, 열)
dfsize = df.shape
dfsize
Out[68]:
(5, 6)
In [69]:
#행과 열 각각의 변수 저장 가능
행 , 열 = df.shape
print(행)
print(열)
 
5
6
In [70]:
#데이타 프레임 상위, 하위건 확인하기
#파라미터 생략시 5건을 생성한다.
dftop = df.head(2)
dftop
Out[70]:
  학년 성별 국어 영어 수학 과학
짱구 1 남자 40 NaN 64.0 NaN
맹구 2 여자 30 90.0 62.0 72.0
In [71]:
dflast = df.tail(2)
dflast
Out[71]:
  학년 성별 국어 영어 수학 과학
도적 3 여자 63 60.0 31.0 70.0
검사 4 남자 120 50.0 NaN 88.0
In [72]:
#dataframe index to list
#데이타프레임 인덱스를 리스트로 변환하기
dfindexlist = list(df.index)
dfindexlist
Out[72]:
['짱구', '맹구', '사탕', '도적', '검사']
In [73]:
#dataframe columns to list
#데이타프레임 컬럼을 리스트로 변환하기
dfcolumnlist = list(df.columns)
dfcolumnlist
Out[73]:
['학년', '성별', '국어', '영어', '수학', '과학']
In [74]:
#데이터의 값들만 확인하기
df.values
Out[74]:
array([[1, '남자', 40, nan, 64.0, nan],
       [2, '여자', 30, 90.0, 62.0, 72.0],
       [1, '남자', 92, 70.0, nan, nan],
       [3, '여자', 63, 60.0, 31.0, 70.0],
       [4, '남자', 120, 50.0, nan, 88.0]], dtype=object)
In [75]:
#데이터 프레임 전치구하기
df_t = df.T
df_t
Out[75]:
  짱구 맹구 사탕 도적 검사
학년 1 2 1 3 4
성별 남자 여자 남자 여자 남자
국어 40 30 92 63 120
영어 NaN 90 70 60 50
수학 64 62 NaN 31 NaN
과학 NaN 72 NaN 70 88
 

데이터 접근

In [76]:
#데이터 프레임 확인
df
Out[76]:
  학년 성별 국어 영어 수학 과학
짱구 1 남자 40 NaN 64.0 NaN
맹구 2 여자 30 90.0 62.0 72.0
사탕 1 남자 92 70.0 NaN NaN
도적 3 여자 63 60.0 31.0 70.0
검사 4 남자 120 50.0 NaN 88.0
In [77]:
#데이터 프레임을 열단위로 접근하기
df['성별']
Out[77]:
짱구    남자
맹구    여자
사탕    남자
도적    여자
검사    남자
Name: 성별, dtype: object
In [78]:
#열단위로 접근하여 그 값들을 리스트로 변환
list(df['성별'].values)
Out[78]:
['남자', '여자', '남자', '여자', '남자']
In [79]:
#데이터 프레임을 행단위로 접근하기
df.loc['짱구']
Out[79]:
학년      1
성별     남자
국어     40
영어    NaN
수학     64
과학    NaN
Name: 짱구, dtype: object
In [80]:
#데이터프레임을 행단위로 접근한 후 값을 리스트로 변환
list(df.loc['짱구'])
Out[80]:
[1, '남자', 40, nan, 64.0, nan]
 

데이터 프레임 값 바꿔주기

In [81]:
#열 -> 행 단위 접근은 에러
df.['과학','짱구'] = 100
df
 
  File "<ipython-input-81-6c54a15750ff>", line 2
    df.['과학','짱구'] = 100
       ^
SyntaxError: invalid syntax
In [82]:
#행 -> 열 단위 접근만 가능
df.loc['짱구','과학'] = 100
df
Out[82]:
  학년 성별 국어 영어 수학 과학
짱구 1 남자 40 NaN 64.0 100.0
맹구 2 여자 30 90.0 62.0 72.0
사탕 1 남자 92 70.0 NaN NaN
도적 3 여자 63 60.0 31.0 70.0
검사 4 남자 120 50.0 NaN 88.0
In [83]:
#접근하고자 하는 행이나, 
#열이 없다면 생성하여 데이터 프레임에 반영됨
df.loc['스타벅스','과학'] = 100
df
Out[83]:
  학년 성별 국어 영어 수학 과학
짱구 1.0 남자 40.0 NaN 64.0 100.0
맹구 2.0 여자 30.0 90.0 62.0 72.0
사탕 1.0 남자 92.0 70.0 NaN NaN
도적 3.0 여자 63.0 60.0 31.0 70.0
검사 4.0 남자 120.0 50.0 NaN 88.0
스타벅스 NaN NaN NaN NaN NaN 100.0
In [84]:
df.loc['커피빈','의자'] = 100
df
Out[84]:
  학년 성별 국어 영어 수학 과학 의자
짱구 1.0 남자 40.0 NaN 64.0 100.0 NaN
맹구 2.0 여자 30.0 90.0 62.0 72.0 NaN
사탕 1.0 남자 92.0 70.0 NaN NaN NaN
도적 3.0 여자 63.0 60.0 31.0 70.0 NaN
검사 4.0 남자 120.0 50.0 NaN 88.0 NaN
스타벅스 NaN NaN NaN NaN NaN 100.0 NaN
커피빈 NaN NaN NaN NaN NaN NaN 100.0
 

이 포스팅은 이젠아이티 주호쌤에게 강의를 듣고 복습하며 작성하였습니다.

In [ ]:
 

'Module > Pandas' 카테고리의 다른 글

파이썬 3차원 배열 다루기  (0) 2020.08.02
Python pandas series  (0) 2020.07.19

Python pandas series

Module/Pandas

 

 

 

안녕하세요. 오늘 포스팅은 시리즈에 관한 내용입니다.
시리즈란 무엇일까요? 시리즈는 판다스의 데이타 프레임을 이루고있는 데이터 형식이라고 볼 수있는데요,
그럼 간단하게 판다스란 무었인지 알아보고, 시리즈에 대해 포스팅 하겠습니다.

 

pandas

구조화된 데이터의 처리를 지원하는 파이썬 라이브러리.
파이썬으로 엑셀처럼 데이터를 다룰 수 있음.

 

Pandas의 자료구조

시리즈(Series) : 인덱스와 value로 구성된 numpy배열의 확장 객체 데이타프레임(dataFrame) : 열과 행으로 구성된 엑셀 스프레드시트와 같은 구조, 행과 열을 이루며, 시리즈로 이루어져 있다.

In [25]:
#필요한 모듈 세팅
from pandas import Series
 

시리즈 데이터 생성

생성자 파라미터로 리스트, numpy배열을 전달함.
리스트는 인덱스가 개념적으로 존재하나, 시리즈는 인덱스가 명시적으로 존재한다.

In [26]:
#리스트 선언
listTest = [10,20,30,40,50]
listTest
Out[26]:
[10, 20, 30, 40, 50]
In [27]:
#시리즈가공
SeriesTest = Series(listTest)
SeriesTest
Out[27]:
0    10
1    20
2    30
3    40
4    50
dtype: int64
 

시리즈 데이터 다루기

In [28]:
#인덱스를 활용하여 값 확인
print(SeriesTest[0])
print(SeriesTest[1])
print(SeriesTest[2])
 
10
20
30
In [29]:
#시리즈의 값 추출
a = SeriesTest.values
a
Out[29]:
array([10, 20, 30, 40, 50])
In [30]:
#시리즈의 값을 리스트로 변환하기
b = list(a)
b
Out[30]:
[10, 20, 30, 40, 50]
In [31]:
#시리즈에서 값을 추출하여 리스트로 만들기
list(SeriesTest.values)
Out[31]:
[10, 20, 30, 40, 50]
In [32]:
#시리즈의 인덱스만 추출하기
i = SeriesTest.index
i
Out[32]:
RangeIndex(start=0, stop=5, step=1)
In [33]:
#시리즈의 인덱스를 리스트로 변환하기
list(SeriesTest.index)
Out[33]:
[0, 1, 2, 3, 4]
 

시리즈 인덱스 지정하기

In [34]:
IndexTest1 = Series([300, 200])
IndexTest2 = Series([300, 200], index=['커피', '콜라'])
print(IndexTest1)
print(IndexTest2)
 
0    300
1    200
dtype: int64
커피    300
콜라    200
dtype: int64
 

시리즈 조건을 주어 다루기

In [35]:
#일반 크기 비교
test1 = SeriesTest[SeriesTest > 30]
test1
Out[35]:
3    40
4    50
dtype: int64
In [36]:
# and
test2 = SeriesTest[SeriesTest<= 40][SeriesTest >=30]
test2
Out[36]:
2    30
3    40
dtype: int64
In [37]:
#or
test3 = SeriesTest[(SeriesTest<=10) | (SeriesTest >=40)]
test3
Out[37]:
0    10
3    40
4    50
dtype: int64
 

이 포스팅은 이젠아이티학원 주호쌤의 강의를 듣고 복습하며 작성하였습니다.

In [ ]:
 

'Module > Pandas' 카테고리의 다른 글

파이썬 3차원 배열 다루기  (0) 2020.08.02
Python Pandas DataFrame  (0) 2020.07.19