Series (시리즈)¶
In [2]:
from IPython.core.display import display, HTML
display(HTML("<style>.container { width:90% !important;}</style>"))
In [3]:
import pandas as pd
# dictionary -> Series
dict_data = {'a':'hello','b':np.nan,'c':3}
sr = pd.Series(dict_data)
print(type(sr))
print(sr)
In [4]:
# list -> Series
sr2 = pd.Series(['2020-07-15',True,5.8])
print(type(sr2))
print(sr2)
In [5]:
# 인덱스, 데이터값 확인
print(sr.index,sr2.index)
print(sr.values,sr2.values)
In [6]:
# tuple -> Series
tuple_data = ('홍길동','남',50,False)
sr3 = pd.Series(tuple_data,index=['이름','성별','나이','결혼여부'])
print(sr3)
print()
print(sr3[0]) # == sr3['이름']
print()
print(sr3[[0,1]]) # == sr3[['이름','성별']]
print()
print(sr3[0:3]) # == sr3['이름':'나이']
print()
# print(sr3[[0:2]]) 오류남
시리즈 연산¶
In [51]:
student1 = pd.Series([np.nan,100,50],index=['국어','수학','영어'])
print(student1)
print()
student2 = pd.Series([20,80],index=['국어','수학'])
print(student2)
print()
# fill_value=0 덕에 비어있는 값들을 0으로 만들어줘서 연산이 가능함
st_add = student1.add(student2,fill_value=0)
st_sub = student1.sub(student2,fill_value=0)
st_mul = student1.mul(student2,fill_value=0)
st_div = student1.div(student2,fill_value=0)
# 비어있는 값들(NaN) 때문에 연산이 제대로 되지 않음
st_add2 = student1 + student2
st_sub2 = student1 - student2
st_mul2 = student1 * student2
st_div2 = student1 / student2
result = pd.DataFrame([st_add,st_add2,st_sub,st_sub2,st_mul,st_mul2,st_div,st_div2],
index=['+','+','-','-','*','*','/','/'])
result
Out[51]:
DataFrame (데이터프레임)¶
In [7]:
dates = pd.date_range('20200705',periods=3)
print(dates)
dict_data = {'A':0,'B':1,'C':2,'D':3}
df = pd.DataFrame([[1,2,3,4],[2,3,4,5],[3,4,5,6]],index=dates,columns=dict_data.keys())
df
Out[7]:
In [39]:
df2 = pd.DataFrame(np.arange(12).reshape(3,4),index=dates,columns=list('abcd'))
df2
Out[39]:
In [9]:
df3 = pd.DataFrame({'A':1,
'B':pd.date_range('20200715',periods=4),
'C':pd.Series(3,index=list(range(4)),dtype='float'),
'D':pd.Categorical(['hi','my','name','is']),
'F':'dewy'})
df3
Out[9]:
In [10]:
# DataFrame 컬럼 타입 보여줌
df3.dtypes
Out[10]:
In [11]:
# DataFrame에 대한 통계 정보 보여줌
df.describe()
Out[11]:
In [12]:
# 전치 .T는 속성이므로 괄호() 안씀 (오류남)
df.T
Out[12]:
In [13]:
df
Out[13]:
In [14]:
# 정렬
df.sort_index(axis=0,ascending=False)
Out[14]:
In [15]:
df.sort_index(axis=1,ascending=False)
Out[15]:
In [16]:
df.sort_values(by='A',ascending=False)
Out[16]:
cloumns, index 이름 바꾸기¶
In [17]:
df.columns = ['가','나','다','라']
df.index = ['a','b','c']
df
Out[17]:
In [18]:
# inplace = True를 해야 원본 데이터 바뀜
df.rename(columns={'가':'a','나':'b','다':'c','라':'d'},inplace=True)
df.rename(index={'a':'A','b':'B','c':'C'},inplace=True)
df
Out[18]:
columns, index 삭제¶
In [19]:
# axis=0 : 행 / axis=1 : 열
df.drop('A')
Out[19]:
In [20]:
df.drop('a',axis=1)
Out[20]:
In [21]:
df.drop(['b','d'],axis=1,inplace=True)
df
Out[21]:
In [22]:
df4 = df
df4
Out[22]:
columns, index 선택¶
In [23]:
df3
Out[23]:
In [24]:
# 행(index)은 slice 사용 가능
df5 = df3[0:3]
df5
Out[24]:
In [25]:
# 열(columns)은 컬럼명으로 해야함
df6 = df3[['A','C','F']]
df6
Out[25]:
In [26]:
# 특정 열(컬럼) 선택
print(df3.F) # = df3['B']
# 특정 행(인덱스) 선택
df3[0:1] # 특정 행을 선택하기 위해서는 한개를 호출할지라도 반드시 범위로 표현해줘야함
Out[26]:
loc : 이름을 이용하여 선택하기¶
In [27]:
df2.loc['2020-07-05':'2020-07-07','a':'c'] # == df2.loc[dates[0:3],'a':'c']
Out[27]:
In [71]:
print(df3.loc[0,:])
df3.loc[[0,1,2],:]
Out[71]:
In [53]:
df2.loc[:,['a','c']]
Out[53]:
In [28]:
# 특정 값 하나만 추출하기 위해서는 .at을 써도 된다.
df2.loc['2020-07-05','a'] # == df2.at['2020-07-05','a']
Out[28]:
iloc : 위치를 이용하여 선택하기¶
In [29]:
print(df2.iloc[2]) # 인덱스 2번째 (2020-07-07) 데이터 추출
df2.iloc[0:3,2:4]
Out[29]:
In [30]:
# 특정 열(컬럼)에 대해서 추출
df2.iloc[:,1:3]
Out[30]:
In [31]:
# 특정 행(인덱스)에 대해서 추출
df2.iloc[0:2,:]
Out[31]:
In [32]:
# 특정 위치에 대해서만 추출
df2.iloc[[0,2],[0,2]]
Out[32]:
In [33]:
# 특정 값 하나만 추출하기 위해서는 .iat을 써도 된다.
df2.iloc[1,1] # == df2.iat[1,1]
Out[33]:
columns, index 추가¶
In [34]:
# 열(컬럼) 추가
df['E']=10
df
Out[34]:
In [35]:
# 행(인덱스) 추가
df.loc['K'] = 5
df
Out[35]:
In [36]:
# 특정 값 바꾸기
df.iloc[0,0] = 100
df
Out[36]:
'코딩 > Python' 카테고리의 다른 글
판다스 이해하기 - 조건문, concat, append, 그룹화, 함수적용, join (0) | 2020.07.16 |
---|---|
판다스 이해하기 - 데이터 정보 확인, 결측치, 중복 데이터, pivot (0) | 2020.07.16 |
판다스 이해하기 - 참고 사이트 모음 (1) | 2020.07.15 |
파일 읽고 쓰기 (0) | 2020.06.15 |
부가적인 파이썬 이해하기 (0) | 2020.06.15 |