파이썬을 위한 7가지 트릭

처음에는 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 소프트웨어 개발에만 관련됨)
. 관심 있는 고급 중소 파트너를 환영합니다. 파이썬!
 

추천

출처blog.csdn.net/BYGFJ/article/details/124096587