2025-04-07

장상희·2025년 4월 7일

파이썬

목록 보기
9/31

2025-04-07

타입변환

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

reindex(재정렬)

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

DataFrame

연산자

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
profile
프로그래머 꿈나무

0개의 댓글