처음에는 Python 코드를 작성하는 것이 쉽지만 툴킷에 더 많은 라이브러리를 추가할수록 스크립트가 장황해지고 불필요한 코드 라인으로 복잡해질 수 있습니다. 단기적으로는 업무에 대처할 수 있을지 모르지만 장기적으로 보면 문제가 작지 않습니다.
이 게시물에서는 Python으로 데이터 과학을 더 간결하게 만드는 7가지 팁을 공유합니다. 여기에는 Pandas 데이터 프레임의 값 수정, 문자열 연결, 파일 읽기 등과 같이 우리가 매일 수행하는 작업이 포함됩니다!
1. Lambda를 사용하여 Pandas 데이터 프레임의 값 수정
다음 데이터 프레임이 있다고 가정합니다 df
.
data = [[1,2,3], [4,5,6], [7,8,9]]
df = pd.DataFrame(data, columns=[0,1,2])
IN[1]: print (df)
OUT[1]: 0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
이제 어떤 이유로 열의 숫자에 값 0
을 추가 해야 합니다. 01
일반적인 접근 방식은 이 작업을 수행하는 함수를 정의한 다음 적용 함수를 사용하여 열 값을 수정하는 것입니다.
def add_numbers(x):
return f'{x}01'
df[0] = df[0].apply(add_numbers)
IN[1]: print (df)
OUT[1]: 0 1 2
0 101 2 3
1 401 5 6
2 701 8 9
복잡하지는 않지만 데이터 프레임의 각 변경 사항에 대해 함수를 만드는 것은 비실용적입니다. 람다가 유용할 때입니다.
람다 함수는 일반 Python 함수와 유사하지만 이름 없이 정의할 수 있으므로 멋진 한 줄짜리 함수가 됩니다. 이전에 사용한 코드는 다음과 같이 줄일 수 있습니다.
df[0] = df[0].apply(lambda x:f'{x}01')
Lambda는 데이터를 수정하기 위해 시리즈 속성에 액세스할 수 있는지 여부를 모를 때 유용합니다.
예를 들어 열에 0
문자가 포함되어 있으며 대문자로 표시하려고 합니다.
# 如果你知道.str的存在,你可以这样做
df[0] = df[0].str.title()
# 如果你不知道.str,你仍然可以用lambda大写
df[0] = df[0].apply(lambda x: x.title())
2. f-문자열을 사용하여 문자열 연결
문자열 연결은 Python에서 매우 일반적인 작업이며 다양한 방법으로 수행할 수 있습니다. 가장 일반적인 방법은 연산자를 사용 +
하는 것이지만 이 연산자의 문제는 문자열 사이에 구분 기호를 추가할 수 없다는 것입니다.
물론 "Hello"와 "World"를 연결하려는 경우 일반적인 해결 방법은 공백 구분 기호(" ")를 추가하는 것입니다.
print("Hello" + " " + "World")
이것은 작업을 수행하지만 더 읽기 쉬운 코드를 작성하기 위해 이를 f-문자열로 바꿀 수 있습니다.
IN[2]: print(f'{Hello} {World}')
OUT[2]: "Hello World"
기본적인 예에서는 이것이 불필요해 보일 수 있지만 여러 값을 연결하는 경우(팁 #3에서 볼 수 있듯이) f-문자열을 사용하면 여러 번 작성하지 않아도 됩니다 + " " +
. +
예전에는 몇 번이나 연산자 를 작성해야 했는지 모르지만 지금은 아닙니다!
문자열을 연결하는 다른 방법은 join()
메서드나 format()
함수를 사용하는 것이지만 f-string이 문자열 연결을 더 잘 수행합니다.
3. Zip() 함수를 사용하여 여러 목록을 반복합니다.
Python에서 둘 이상의 목록을 반복하고 싶었던 적이 있습니까? 두 개의 목록이 있는 경우 구현 enumerate
하는 데 사용할 .
teams = ['Barcelona', 'Bayern Munich', 'Chelsea']
leagues = ['La Liga', 'Bundesliga', 'Premiere League']
for i, team in enumerate(teams):
league = leagues[i]
print(f'{team} plays in {league}')
그러나 두 개 이상의 목록이 있는 경우에는 비실용적입니다. 더 좋은 방법은 zip()
함수를 사용하는 것입니다. zip()
이 함수는 반복 데이터를 가져와 튜플에 수집하고 반환합니다.
목록을 하나 더 추가 zip()
하고 위력을 봅시다!
teams = ['Barcelona', 'Bayern Munich', 'Chelsea']
leagues = ['La Liga', 'Bundesliga', 'Premiere League']
countries = ['Spain', 'Germany', 'UK']
for team, league, country in zip(teams, leagues, countries):
print(f'{team} plays in {league}. Country: {country}')
위 코드의 출력은 다음과 같습니다.
Barcelona plays in La Liga. Country: Spain
Bayern Munich plays in Bundesliga. Country: Germany
Chelsea plays in Premiere League. Country: UK
이 예에서 f-문자열을 사용했다는 사실을 눈치채셨나요? 코드가 더 읽기 쉬워지죠?
4. 목록 이해력 사용
데이터 정리 및 처리의 일반적인 단계는 기존 목록을 수정하는 것입니다. 예를 들어 대문자로 표시해야 하는 다음 목록이 있습니다.
words = ['california', 'florida', 'texas']
단어 목록의 각 요소를 대문자로 표시하는 일반적인 방법은 새 대문자 목록을 만들고 for 루프를 수행하고 .title()을 사용하고 수정된 각 값을 새 목록에 추가하는 것입니다.
capitalized = []
for word in words:
capitalized.append(word.title())
그러나 이를 수행하는 Pythonic 방법은 목록 이해를 사용하는 것입니다. 목록 이해에는 목록을 만드는 우아한 방법이 있습니다.
for
한 줄의 코드로 위의 루프를 다시 작성할 수 있습니다 .
capitalized = [word.title() for word in words]
여기에서 첫 번째 예의 일부 단계를 건너뛸 수 있으며 결과는 동일합니다.
5. 파일 객체에 with 문 사용
프로젝트 작업을 할 때 우리는 종종 파일을 읽고 씁니다. 가장 일반적인 방법은 open()
우리가 조작할 수 있는 파일 객체를 생성하는 파일을 여는 함수를 사용하는 것입니다. 그런 다음 일반적인 관행으로 close()
해당 파일 객체를 닫아야 합니다.
f = open('dataset.txt', 'w')
f.write('new_data')
f.close()
기억하기 쉽지만 몇 시간 동안 코드를 작성 하고 나면 파일 을 f.close()
닫는 것을 잊어버릴 수 있습니다. f
여기 에서 with
문장이 유용합니다. 문은 다음 형식 with
의 파일 개체를 자동으로 닫습니다 .f
with open('dataset.txt', 'w') as f:
f.write('new_data')
이를 통해 코드를 짧게 유지할 수 있습니다.
pandas로 쉽게 할 수 있는 것처럼 CSV 파일을 읽는 데 사용할 필요는 pd.read_csv()
없지만 다른 유형의 파일을 읽을 때 여전히 유용합니다. 예를 들어, 피클 파일에서 데이터를 읽을 때 자주 사용됩니다.
import pickle
# 从pickle文件中读取数据集
with open(‘test’, ‘rb’) as input:
data = pickle.load(input)
6. 사전 항목을 가져오기 위해 대괄호 사용을 중지하고 대신 .get()을 사용하십시오.
예를 들어 다음 사전을 고려하십시오.
person = {'name': 'John', 'age': 20}
이름과 나이를 각각 및 로 얻을 person[name]
수 있습니다 . person[age]
그러나 어떤 이유로 우리는 "salary"와 같이 존재하지 않는 키를 원하고 실행 person[salary]
하면 'KeyError'가 발생합니다.
여기에서 get() 메서드가 유용합니다. get() 메서드는 키가 사전에 있으면 지정된 키의 값을 반환하지만 키가 없으면 Python은 None을 반환합니다. 덕분에 코드가 깨지지 않습니다.
person = {'name': 'John', 'age': 20}
print('Name: ', person.get('name'))
print('Age: ', person.get('age'))
print('Salary: ', person.get('salary'))
출력은 다음과 같습니다.
Name: John
Age: 20
Salary: None
7. 다중 할당
여러 변수, 목록 또는 사전을 만드는 데 사용되는 코드 줄 수를 줄이고 싶었던 적이 있습니까? 글쎄, 당신은 이것을 다중 할당으로 쉽게 할 수 있습니다.
# 原始操作
a = 1
b = 2
c = 3
# 替代操作
a, b, c = 1, 2, 3
# 代替在不同行中创建多个列表
data_1 = []
data_2 = []
data_3 = []
data_4 = []
# 可以在一行中创建它们的多重赋值
data_1, data_2, data_3, data_4 = [], [], [], []
# 或者使用列表理解法
data_1, data_2, data_3, data_4 = [[] for i in range(4)]
제가 직접 만든 Python learning Q group: 831804576을 추천하고 싶습니다. 모든 그룹이 Python을 배우고 있습니다. Python을 배우고 싶거나 배우고 있다면 언제든지 가입할 수 있습니다. 모두가 소프트웨어 개발 파티이며 공유합니다. 2021년 최신 Python 고급 재료 및 제로 기반 교육의 사본을 포함 하여 때때로 건조 제품(Python 소프트웨어 개발에만 관련됨)
. 관심 있는 고급 중소 파트너를 환영합니다. 파이썬!