data = [100, 200, 300]
index = ["철수", "영희", "아름"]
s = Series(data, index)
print(s.index)
#print(s.astype(int))인트로 타입을 바꾸는 함수
#print(s.astype(np.int32))
#isna() 있는걸 전부 더하는 함수
#Index(['철수', '영희', '아름'], dtype='object')
data = ["100,000", "200,000", "300,000"]
index = ["철수", "영희", "아름"]
s = Series(data, index)
s1 = s.str.replace(',', '')#replace(뭘 바꿀껀지,뭐로 바꿀껀지)
s1.astype("int32")
#또 다른 방법
#s1 = s.replace(',', '', regex=True)
#s1.astype("int32")
#0
#철수 100000
#영희 200000
#아름 300000
#dtype: int32
s = pd.Series(["30세", "40세", "50세"], index=["김대리", "이과장", "박차장"])
s1 = s.str.replace('세', '')
s1.astype("int32")
#다른 답
#s1 = s.str[:-1] -1로 뒤에 있는 세를 지운다
#s1 = s1.astype('int32')타입을 Int32로 변경한다s = pd.Series(["30세", "40세", "50세"], index=["김대리", "이과장", "박차장"])
s1 = s.str.replace('세', '')s1.astype("int32")
#다른 답#s1 = s.str[:-1] -1로 뒤에 있는 세를 지운다#s1 = s1.astype('int32')타입을 Int32로 변경한다
#s1
# 0
#김대리 30
#이과장 40
#박차장 50
#dtype: int32
s = pd.Series([1, 2, 3, 4], index=["d", "c", "a", "b"])
s = s.sort_index()#인덱스를 내림차순 정렬해준다
s
#
# 0
#a 3
#b 4
#c 2
#d 1
s = pd.Series([1, 2, 3], index=['2023-01-01', '2023-01-02', '2023-01-03'])
s.index = s.index.str[5:]#5부터 출력함
# 0
#01-01 1
#01-02 2
#01-03 3
#dtype: int64
s = pd.Series([1, 2, 3], index=['2023-01-01', '2023-01-02', '2023-01-03'])
s.index = pd.to_datetime( s.index )#인덱스를 데이트타임 타입으로 변경한다
s.index #DatetimeIndex(['2023-01-01', '2023-01-02', '2023-01-03'], dtype='datetime64[ns]', freq=None)
s = pd.Series([1, 2, 3, np.nan])
s.dropna()#드랍한다
#
#0
#0 1234
#1 5678
#2 9876
#dtype: int32
s = pd.Series(["1,234", "5,678", "9,876"])
s1 = s.str.replace(',', '')
s1.astype("int32")
#다른 답
#def remove_comma( x ):
# return x.replace(',', '')
#
#s.map( remove_comma )
#s.map( lambda x: x.replace(',', '')
#0
#0 1234
#1 5678
#2 9876
#dtype: int32
s = pd.Series([10, 100, 1000])
s.apply(np.log10)
#0
#0 1.0
#1 2.0
#2 3.0
#dtype: float64
data = [[1,10,100],[2,20,200],[3,30,300]]
col = ['col1','col2','col3']
row = ['row1','row2','row3']
df = pd.DataFrame(data=data,index=row,columns=col)
print(df)
# col1 col2 col3
#row1 1 10 100
#row2 2 20 200
#row3 3 30 300
add
data = [[1,10,100],[2,20,200],[3,30,300]]
col = ['col1','col2','col3']
row = ['row1','row2','row3']
df = pd.DataFrame(data=data,index=row,columns=col)
result = df.add(1)#df의 모든 수에 1을 더한다
print(result)
#다르지만 같은 결과
#result = df+1
#print(result)
# col1 col2 col3
#row1 2 11 101
#row2 3 21 201
#row3 4 31 301
다른 DataFrame 객체를 더하기
#새로운 DataFrame 객체 생성
data2 = [[3],[4],[5]]
df2 = pd.DataFrame(data=data2,index=['row1','row2','row3'],columns=['col1'])
print(df2)
# col1
#row1 3
#row2 4
#row3 5
result = df.add(df2)
print(result)
# col1 col2 col3
#row1 4 NaN NaN
#row2 6 NaN NaN
#row3 8 NaN NaN
df2에는 col2과 col3열이 없기 때문에 해당 열의 계산결과는 NaN으로 반환됩니다.
fill_value 인수를 통해 해당 오류를 출력 가능하도록 바꿔보도록 하겠습니다.
result = df.add(df2,fill_value=0)#df의 없는 값을 value=0으로 채워버립니다
print(result)
# col1 col2 col3
#row1 4 10.0 100.0
#row2 6 20.0 200.0
#row3 8 30.0 300.0
result = df.sub(df2,fill_value=0)
print(result)
# col1 col2 col3
#row1 -2 10.0 100.0
#row2 -2 20.0 200.0
#row3 -2 30.0 300.0
result = df.mul(df2,fill_value=1)
print(result)
# col1 col2 col3
#row1 3 10.0 100.0
#row2 8 20.0 200.0
#row3 15 30.0 300.0
result = df.mod(df2,fill_value=1)
print(result)
# col1 col2 col3
#row1 1 0.0 0.0
#row2 1 0.0 0.0
#row3 2 0.0 0.0
그리고 나머리 sub,mul,div,mod 모두 같은 방식이다
거듭제곱
data = [[1,2,3],[4,5,6],[7,8,9]]
col = ['col1','col2','col3']
row = ['row1','row2','row3']
df = pd.DataFrame(data=data,index=row,columns=col)
# col1 col2 col3
#row1 1 2 3
#row2 4 5 6
#row3 7 8 9
result = df.pow(3)
print(result)
#같은 답
#result = df**3
#print(result)
# col1 col2 col3
#row1 1 8 27
#row2 64 125 216
#row3 343 512 729
다른 제곱할 df2만들기
data2 = [[0],[3],[5]]
df2 = pd.DataFrame(data=data2,index=['row1','row2','row3'],columns=['col1'])
# col1
#row1 0
#row2 3
#row3 5
둘이 제곱하기
result = df.pow(df2,fill_value=0)
print(result)
# col1 col2 col3
#row1 1 1.0 1.0
#row2 64 1.0 1.0
#row3 16807 1.0 1.0
행열곱
col1 col2 col1 col2 col1 col2
row1 A B x row1 a b = row1 Aa+bc Ab+Bd
row2 C D row2 c d row2 Ca+Dc Cb+Dd
행열곱을 실행할 수 있게 두 df를 생성한다
col = ['col1','col2']
row = ['row1','row2']
data1 = [[1,2],[3,4]]
data2 = [[5,6],[7,8]]
df1 = pd.DataFrame(data=data1)
df2 = pd.DataFrame(data=data2)
# 0 1
#0 1 2
#1 3 4
#-------------------------------------------------------------------------------
# 0 1
#0 5 6
#1 7 8
df3 = df1.dot(df2)
print(df3)
# 0 1
#0 19 22
#1 43 50
어떻게 진행이되는지
0 1 0 1 0 1 0 1
0 1 2 x 0 5 6 = 0 1*5+2*7 1*6+2*8 = 0 19 22
1 3 4 1 7 8 1 1*7+3*8 3*6+4*8 1 43 50