Python

JIYOUNG KIM·2022년 1월 25일
0

python

목록 보기
1/2
post-thumbnail
  • args : 정해지지 않은 수의 (일반) 피라미터를 받음, *args
  • kwargs : 정해지지 않은 수의 키워드파라미터를 받음, **kwargs
  • dir() : 함수에 대한 명령어의 목록을 얻을 수 있는 함수

MRO(Method Resolution Order)

  • 상속과 관련된 개념

  • 메소드 결정 순서

  • 파이썬은 기본적으로 다중 상속을 지원하는데 부모 클래스들이 똑같은 이름의 메소드를 가지고 있다면 죽음의 다이아몬드(the Deadly Diamond of Death) 문제가 발생
    = 하나의 구문이 두가지 이상의 의미로 해석될 때 발생하는 문제

  • MRO는 자식과 부모 클래스를 전부 포함하여 메소드의 실행 순서를 지정하는 것

  • __mro__ 로 확인 가능 , 튜플 형식, 먼저 출력된 값일수록 우선순위가 높음

issubclass 함수

  • issubclass(자식클래스, 부모클래스)
    • 첫 번째 인자 : 포함되는지 확인하려는 자식클래스, 데이터타입
    • 두 번째 인자 : 포함하는지 확인하려는 부모클래스, 데이터 타입
    • 첫 번째 인자가 두 번째 인자에 포함되면 True, 아니면 False
issubclass(int,int) # True

issubclass(int, float #False

isinstance()

isinstance(1,int) # 1이 int인지 아닌지 -> True

isinstance("hi", int) # False

str, __str__

str : 입력받은 객체의 문자열 버전을 반환하는 함수

__ : 해당하는 자료형에 대한 연산을 정의하는 메소드들 앞뒤에 double underscore

repr, __repr__

어떤 객체의 '출력될 수 있는 표현' 을 문자열의 형태로 반환

repr(3) # '3'

repr([1,2,3]) # '[1,2,3]'

import math
repr(math) # "<module 'math' from ...>"
  • 차이점
    __str__ : 태생적인 목적 자체가 인자를 '문자열화' 해 반환하는 것, 서로 다른 자료형 간에 인터페이스를 제공하기 위해서 존재
    __repr__ : 객체를 인간이 이해할 수 있는 평문으로 '표현'하는 것

pd.DataFrame to JSON

df = pd.dataframe([['Jay',16,'BBA'],
              ['Jack',19,'BTech'],
              ['Mark',18,'BSc']],
              columns = ['Name','Age','Course'])
              
df.to_json(orient = '')


# orient = 'columns'
{"Name":{"0":"Jay","1":"Jack","2":"Mark"},
 "Age":{"0":16,"1":19,"2":18},
 "Course":{"0":"BBA","1":"BTech","2":"BSc"}}
 
# orient = 'records'
[{"Name":"Jay","Age":16,"Course":"BBA"},{"Name":"Jack","Age":19,"Course":"BTech"},{"Name":"Mark","Age":18,"Course":"BSc"}]

# orient = 'index'
{"0":{"Name":"Jay","Age":16,"Course":"BBA"},
 "1":{"Name":"Jack","Age":19,"Course":"BTech"},
 "2":{"Name":"Mark","Age":18,"Course":"BSc"}}
 
# orient = 'split'
{"columns":["Name","Age","Course"],
 "index":[0,1,2],
 "data":[["Jay",16,"BBA"],["Jack",19,"BTech"],["Mark",18,"BSc"]]}
 
# orient = 'table'
{"schema": {"fields":[{"name":"index","type":"integer"},{"name":"Name","type":"string"},{"name":"Age","type":"integer"},{"name":"Course","type":"string"}],"primaryKey":["index"],"pandas_version":"0.20.0"}, "data": [{"index":0,"Name":"Jay","Age":16,"Course":"BBA"},{"index":1,"Name":"Jack","Age":19,"Course":"BTech"},{"index":2,"Name":"Mark","Age":18,"Course":"BSc"}]}

with 문

r : 읽기 모드
w : 쓰기 모드, 파일이 이미 동일한 이름으로 존재하면 덮어씀
a : 추가 모드, 존재하는 파일에 추가할 때, 파일이 없다면 생성함

with open("file_name.json", "r") as file:
	for i in file:
    	print(i)
        
with open("file_name.json", 'w') as file:
	file.write("anything you want to write on file")
    file.writerow("write in row")
    
with open("file_name.json", 'a') as file:
	file.write("anything you want to add on file")

csv

writer.writeheader() : 파일의 첫번째 행에 항목의 이름들을 넣어주는 것
writerows() : 데이터 전체를 한번에 작성
writerow() : 한 줄씩 넣는 방법

data = [{"key","values"}]

with open("file.csv","w") as file:
	writer = csv.DictWriter(file, fieldnames=["here is name of data's key"])
    writer.writeheader()
    writer.writerows(data)
    # or
    for row in data:
    writer.writerow(row)
profile
데이터분석가

0개의 댓글