
오늘은 pandas를 배웠다. 와우,,
뼛속까지 문과인 나는 힘들다ㅇㅁㅇ근데 신기하다
입력하는 방법도 다양하고 내가 하나 잘못 입력하면 바로 오류 뜨고 똑똑해,,
복습을 하는데 자고 일어나면 다시 처음처럼.. 멋져 내 머리 :)
강사님이 말씀해주신 것처럼 하다보면 자연스럽게 외워지겠지!.!
할 수 있당. 오늘 하루도 수고 많았오~~
▶print와 return의 차이
print는 출력하면 끝, return은 출력된 값을 다른 곳에 쓸 수 있다.
▶pwd는 지금 내가 어디서 작업하고 있는지를 알려줌
<ch5. 함수>
▶# x는 전역변수, t는 지역변수
def test(t):
print(x)
t = 20
print("In Function:", t)
x = 10
전역변수는 함수 안에서도 쓸 수 있고, 밖에서도 쓸 수 있다.
지역변수는 def 안에 있으니 안에서만 쓸 수 있다. 다른 입력창에서 print(t)해도 t값이 안 나온다.
▶# 함수 안의 변수 s와, 밖의 변수 s는 다른 메모리 주소를 가진 다른 변수
def f():
s = "I love London!"
print(s)
s = "I love Paris!"
f()
print(s)
▶def print_something(my_name, your_name): #문자열 포맷팅
print("Hello {0}, My name is {1}".format(your_name, my_name))
print_something("Sungchul", "TEAMLAB")
print_something(your_name = "TEAMLAB", my_name = "Sungchul")
▶가변 인수(args)는 갯수를 모를때 쓴다.
def asterisk_test_2(*args):
x, y, *z = args
return x, y, z
print(asterisk_test_2(3, 4, 5))
<ch6. 문자열>
▶역순 정렬 ☞ a[::-1]
▶'A' in a: ☞ a안에 있는지 없는지 체크할 때 in을 씀
▶문자열과 정수형 간 연산은 불가함. str끼리만 더할 수 있다.
▶title.upper() #대문자로 바꿔라
▶title.lower() #소문자로 바꿔라
▶title.title() #단어의 첫글자만
▶title.capitalize() #모든문장의 첫글자만
▶title.count('a') #소문자가 몇개 있나
▶title.isdigit() # 숫자가 있냐고 물어보는것
▶title.startswith('a') #a로 시작하냐는 뜻
<단어 카운팅>
▶ 주어진 txt파일을 열어서 리스크 변수에 저장하기
f = open("yesterday.txt", 'r')
yesterday_lyric = f.readlines() ☞ 텍스트를 읽어주는 것
f.close() ☞ open으로 열었으면 마지막엔 닫아야됨
▶ 문장들 다 합쳐서 한 문장으로 만들기
contents = ""
for line in yesterday_lyric:
contents = contents + line.strip() + "\n" ☞ strip는 빈공간 없애는 것
contents
☞ contents 라는 빈공간을 만들어 line으로 안에 채워주는 것. 문장이 하나가 됨
▶ {1:.2f} 앞에 1은 위치값이고 :뒤에 있는 .2f는 반올림해서 소수점 둘째자리까지 표현해라는 뜻
▶ 10자리의 공간을 확보하고 우측 정렬로 1를 출력하라 ☞ '%10d' % 1 ☞ ' 1' 출력된다.
☞ 가독성을 위해 하기도 함. 앞에 자리 만들기 위해 씀
▶10자리의 공간을 확보하고 좌측 정렬로 1를 출력하라 ☞ '%-10d' % 1
▶10자리를 확보하고 소수점 셋째 자리까지 출력하라 ☞ '%10.3f' % 5.91231 ☞ ' 5.912'
▶'>' 이걸로도 우측정렬 가능
☞ 10자리의 공간을 확보하고 우측 정렬로 문자열 'Apple'을 출력하라 ☞ "{0:>10s} ".format('Apple')
☞ ' apple'
<Pandas>
▶import 모듈이름 as 변경이름
▶s = pd.Series([3, -5, 7, 4], index=['a', 'b', 'c', 'd'])
# series를 함수로 봐도 됨.
# a, b, c, d는 인덱스 번호다.
☞
a 3
b -5
c 7
d 4
dtype: int64
▶drop은 지우는 것
☞s.drop(['a', 'c'])
<Dataframe>
▶행과 열이 있는것
▶index 행=인덱스=리스트의 성분, columns 열=칼럼=키값
▶data = {'Country': ['Belgium', 'India', 'Brazil'],
'Capital': ['Brussels', 'New Delhi', 'Brasilia'],
'Population': [11190846, 1303171035, 207847528]}
☞df = pd.DataFrame(data, columns=['Country', 'Capital', 'Population'])
df = pd.DataFrame(data)
☞
▶s = pd.Series([3, -5, 7, 4], index=['a', 'b', 'c', 'd'])
a 3
b -5
c 7
d 4
dtype: int64
▶dp1 = df.drop('country', axis=1) #axis=0 행, axis=1 열
# country가 열에 있으니 axis=1로 함.
#drop으로 바꾸고 싶으면 dp=df.drop('country', axis=1)이렇게 정의 해줘야 됨
▶df.iloc[0, 0] # iloc은 숫자로 위치찾는 걸로 0행0열이라는 뜻
▶df.loc[0, 'Country']
#loc는 이름으로 위치 찾는 것이다.
# [0, 'Country']에서 앞에있는건 행이 아니라 행 이름이 0인것이다.
▶df.loc[:, 'Country'] ☞ 행을 다 가져온 것
▶df.sort_values(by='Country')
# sort_values를 하면 정렬을 해줌.
# by.뒤에 있는 것을 기준으로 정렬해줌.
▶df.rank() #순의 매길때 씀
▶df.rank(ascending=False) #이렇게 false로 하면 인구수 등수가 달라짐
#ascending오름차순(작은수부터 큰수로)
#descending내림차순(큰수부터 작은수로)
▶df.shape은 몇행 몇열인지를 묻는 것
▶print(df.columns) #columns에 대한 정보들이 나온다.
▶df.sum() #문자열끼리 더할 수 있다.
Country BelgiumIndiaBrazil
Capital BrusselsNew DelhiBrasilia
Population 1522209409
dtype: object
▶# df.apply(lambda x : 수행문) : dataframe의 모든 요소들에 대해 함수를 적용하라!
df.apply(lambda x: x*2) #수행문은 어떤 작업을 하겠다라는 것
# 모든 데이터에 대해 곱하기2를 하겠다는 뜻.
# 곱하기 2는 문자는 숫자에 다 할 수 있으니 에러가 안나는 것. 제곱이면 에러가 날 수 있다
▶df.describe() #데이터의 통계값을 알려줌.
▶df2.info() #다 non null이니 다 데이터가 차있는것
# datetime은 시간 날짜 형식이라는 뜻.
#object는 str이다.
#category도 str과 비슷함.
<class 'pandas.core.frame.DataFrame'>
Int64Index: 4 entries, 0 to 3
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 A 4 non-null int64
1 B 4 non-null datetime64[ns]
2 C 4 non-null float32
3 D 4 non-null int32
4 E 4 non-null category
5 F 4 non-null object
dtypes: category(1), datetime64[ns](1), float32(1), int32(1), int64(1), object(1)
memory usage: 288.0+ bytes
▶pd.Categorical([1, "train", "test", "train"])
# Categories은 유일한 값들 가지고 몇개인지 볼 수 있음. 중복제외하고
[1, 'train', 'test', 'train']
Categories (3, object): [1, 'test', 'train']
▶# transpose : 행<->열 교환
df.T
▶df.sort_index(axis=1, ascending=False)
#axis가 0이고 ascending이 false면 행의 순서가 바껴진다.
▶# 특정 칼럼 기준으로 값 정렬
df.sort_values(by='A')
▶# 행 인덱싱
# Selecting via [], which slices the rows.
df[0:3]
▶df.loc[:, ['A', 'B']] #모든행을 가져오고 열은 A, B만 가져온다는 것
▶# 특정 행 값들 가져오기
df.iloc[3] #3번째 행만 가져온것
▶df[df['A'] > 0] #A column중에 0큰것만 가져온 것
▶df2 = df.copy()
df2['E'] = ['one', 'one', 'two', 'three', 'four', 'three']
# E라는 COLUMN추가한 것
▶# df2의 0보다 큰 값들은 전부 마이너스를 곱해라
df2[df2 > 0] = -df2
# 이러면 다 마이너스가 됨
'PYTHON' 카테고리의 다른 글
[빅데이터 분석] 2021.12.20 Titanic (0) | 2021.12.20 |
---|---|
[빅데이터 분석] 2021.12.17 Pandas (0) | 2021.12.19 |
[빅데이터 분석] 2021.12.15 Python (0) | 2021.12.15 |
[빅데이터 분석] 2021.12.14 Python (0) | 2021.12.14 |
[빅데이터 분석] 2021.12.13 Python (0) | 2021.12.14 |