Data Science and Data Proicessing

지금 당장 사용해야하는 프로그래머를위한 과소 평가 된 5 가지 앱

들어 본 적이 없더라도 벨트 아래에 있어야 할 도구가 있습니다.

Image for post
~의 사진조슈아 레 데콥의 위에Unsplash

소개

개발자가 앱과 소프트웨어를 만들기 위해 수많은 앱과 소프트웨어를 사용하는 방식은 아이러니합니다. 시간이 지남에 따라 워크 플로의 일부로 선택한 몇 가지 도구에 대한 강력한 선호도를 개발했습니다. 그러나 일부 소프트웨어가 표준이되었다고해서 항상 다른 소프트웨어를 주시해서는 안되는 것은 아닙니다! 다음은 내가 매일 사용하려고 시도한 가장 과소 평가되었지만 엄청나게 유용한 앱 중 일부이며 여러분도 사용해야한다고 생각합니다!

목차

  1. Ungit
  2. Termius
  3. 기민함
  4. 뵤부
  5. 스페이스 데스크

1. Ungit

명령 줄 인터페이스를 통해 Git 리포지토리를 관리하는 것은 악명 높을 정도로 어렵습니다. 모든 사람이 사실을 알고 있습니다. 그리고 20 개 정도의 다른 브랜치가있는 프로젝트를 열면 모든 브랜치를 통해 최근 커밋을 따라 가기가 어렵습니다.분기 모델. 더 나쁜 것은 처음으로 Git을 사용하여 버전 제어를 수행하려는 초보자입니다. ㅏCLI는 사용자가 Git의 진정한 의미를 이해하도록 할 수 없습니다.

UngitGit 저장소 관리를위한 직관적 인 GUI로 이러한 모든 문제를 해결합니다.

Ungit커밋 및 분기의 거미줄처럼 저장소를 나타냅니다. 작동 방식은 다음과 같습니다.

Image for post
ungit 살펴보기
Image for post
ungit에서 새 커밋 만들기
Image for post
ungit의 동일한 저장소에서 다른 분기 간 전환 (체크 아웃)

2. Termius

격리 시간 (적어도이 글을 쓰는 시점)이므로 모두가 집에서 합리적으로 일하고 있습니다. 직장에서 컴퓨터 나 서버에 액세스해야하는 경우 어떻게합니까? 글쎄, 당신은 서버에 SSH를 사용하여 해당 컴퓨터의 터미널에 대한 액세스 권한을 부여합니다. 이것은 간단한 것으로 할 수 있지만ssh명령, 왜 안돼스타일Termius?

Image for post
원격 서버, Termius에서`sl` 실행 😎
Termius에 대한 사용자 지정 옵션

3. 기민성

터미널에 대해 말하면기민함내 로컬 터미널 에뮬레이터로 이동합니다. Windows, macOS 및 많은 Linux 배포에서 지원됩니다. 최고의 판매 포인트 중 하나기민함그것입니다GPU 가속 지원. 이 때문에 터미널 에뮬레이터 제작자는대체 제품에 비해 놀랍도록 빠른 성능을 자랑합니다..

Image for post

4. 뵤부

이건 아니야기술적으로앱이나 소프트웨어이지만 개인적으로 워크 플로에서이 기능을 많이 사용했기 때문에이 기사에서이 기능을 소개해야한다고 느꼈습니다.It’s a terminal multiplexer & window manager— 사실, 실제로는 래퍼입니다.tmux및 / 또는GNU 화면,들어 보셨을 멀티플렉서입니다. 원격 서버 (Termius 😉)에서 작업 중이거나 자신의 컴퓨터에서 여러 터미널 창을 자주 여는 경우뵤부확실히 당신을위한 것입니다.

Image for post
Byobu를 사용하여 한 곳에서 터미널 세션 / 인스턴스 처리
Image for post
Byobu의기본 상태 표시 줄
Image for post
Byobu의 분할 창

5. 스페이스 데스크

결론

오늘부터 사용해야하는 과소 평가 된 앱 / 소프트웨어에 대한 내용입니다! 내가 나열한 것에 대한 생각이나 대안이 있으면 언제든지 알려 주시고 아래에서 대화를 시작하세요.언제나처럼 즐거운 코딩입니다. 여러분!

프로그램 작성

🔝 시간을 절약하는 유용한 Python 스 니펫 29 가지

실제로 개발자로서의 시간을 절약 해주는 가장 좋아하는 29 개의 Python 스 니펫이 있습니다.

Top 29 Useful Python Snippets That Save You Time
출처:Pixabay

Python은 데이터 과학 및 기계 학습, 웹 개발, 스크립팅, 자동화 등에서 많은 사람들이 사용하는 가장 인기있는 언어 중 하나입니다. 이 인기의 이유 중 하나는 단순성과 학습 용이성입니다.

이 글을 읽고 있다면 이미 Python을 사용하고 있거나 적어도 관심이있을 가능성이 높습니다.

이 기사에서는 놀랍도록 빠르게 이해하고 익힐 수있는 29 개의 짧은 코드 스 니펫을 간략히 살펴 보겠습니다. 가다!

👉 1. 고유성 확인

다음 메소드는 주어진 목록에 중복 항목이 있는지 확인합니다. 속성을 사용합니다.세트()목록에서 중복 항목을 제거합니다.

👉 2. 철자

이 방법은 두 문자열이 애너그램인지 확인하는 데 사용할 수 있습니다. Anagram은 다른 단어 나 구의 문자를 다시 정렬하여 형성 한 단어 나 구로, 일반적으로 모든 원래 문자를 정확히 한 번 사용합니다.

👉 3. 메모리

그리고 이것은 객체의 메모리 사용량을 확인하는 데 사용할 수 있습니다.

👉 4. 바이트 크기

이 메서드는 문자열의 길이를 바이트 단위로 반환합니다.

👉 5. 문자열을 N 번 인쇄

이 스 니펫은 문자열을 출력하는 데 사용할 수 있습니다.이를 위해 루프를 사용할 필요가 없습니다.

👉 6. 단어의 첫 글자를 크게 만듭니다.

그리고 여기에 레지스터가 있습니다. 스 니펫은 메소드를 사용합니다.표제()문자열의 각 단어를 대문자로 표시하려면 :

👉 7. 분리

이 메서드는 목록을 지정된 크기의 작은 목록으로 분할합니다.

👉 8. 거짓 값 제거

따라서 거짓 값 (그릇된,없음,0«»)를 사용하여 목록에서필터():

👉 9. 계산

다음 코드를 사용하여 2D 배열을 전치 할 수 있습니다.

👉 10. 체인 비교

한 줄에 모든 종류의 연산자를 사용하여 여러 비교를 수행 할 수 있습니다.

👉 11. 쉼표로 구분

다음 스 니펫을 사용하여 문자열 목록을 단일 문자열로 변환 할 수 있습니다. 여기서 목록의 각 항목은 쉼표로 구분됩니다.

👉 12. 모음 세기

이 방법은 모음 수를 계산합니다.( "a", "e", "i", "o", "u")문자열에서 발견 :

👉 13. 문자열의 첫 글자를 소문자로 변환

지정된 문자열의 첫 글자를 소문자로 변환하는 데 사용합니다.

👉 14. 앤티 앨리어싱

다음 방법은 재귀를 사용하여 잠재적으로 깊은 목록을 평면화합니다.

👉 15. 차이

이 방법은 첫 번째에있는 값만 유지하면서 두 반복 간의 차이를 찾습니다.

👉 16. 목록의 차이점

다음 메서드는이 함수를 두 목록의 각 요소에 적용한 후 두 목록의 차이를 반환합니다.

👉 17. 연결 함수 호출

한 줄에 여러 함수를 호출 할 수 있습니다.

👉 18. 중복 찾기

이 코드는 다음 사실을 사용하여 목록에 중복 값이 ​​있는지 확인합니다.세트()고유 한 값만 포함합니다.

👉 19. 두 개의 사전 결합

다음 방법을 사용하여 두 사전을 결합 할 수 있습니다.

👉 20. 두 목록을 사전으로 변환

이제 두 목록을 사전으로 변환 해 보겠습니다.

👉 21. ʻenumerate` 사용

스 니펫은 사용할 수있는 항목을 보여줍니다.세다()목록의 값과 인덱스를 모두 얻으려면 :

👉 22. 보낸 시간

특정 코드가 실행되는 데 걸리는 시간을 계산하는 데 사용합니다.

👉 23. 시도 / 다른

당신이 사용할 수있는그밖에블록의 일부로시험:

👉 24. 가장 자주 나타나는 요소

이 메서드는 목록에 나타나는 가장 빈번한 항목을 반환합니다.

👉 25. 회문

이 메서드는 주어진 문자열이 회문인지 확인합니다.

👉 26. if-else가없는 계산기

다음 스 니펫은 조건없이 간단한 계산기를 작성하는 방법을 보여줍니다.다른 경우라면:

👉 27. 셔플

이 코드는 목록의 항목 순서를 무작위로 지정하는 데 사용할 수 있습니다. 참고혼합제자리에서 일하고 반환없음:

👉 28. 값 변경

추가 변수없이 두 개의 변수를 교환하는 정말 빠른 방법 :

👉 29. 누락 된 키에 대한 기본값 가져 오기

이 코드는 찾고있는 키가 사전에 포함되지 않은 경우 기본값을 가져올 수있는 방법을 보여줍니다.

더 읽어보기

이 기사가 도움이 되었다면 아래의 💚 또는 👏 버튼을 클릭하거나 Facebook에서 기사를 공유하여 친구들도 도움을받을 수 있습니다.

내 이야기에서 더 :

이 질문을하면 당신이 파이썬 초보자라고 사람들에게 말하는 것입니다.

8 월 2 일 · 5최소 읽기

며칠 전 Reddit에서 "learnpython"서브를 검색했을 때 Redditor가이 질문을 다시하는 것을 보았습니다. 인터넷상에는이 질문에 대한 답과 설명이 너무 많지만, 많은 초보자들은 여전히 ​​그것에 대해 모르고 실수를합니다. 여기에 질문이 있습니다

"=="와 "is"의 차이점은 무엇입니까?

Image for post
~의 사진Rohit 농부의 위에Unsplash

"=="와 "is"는 모두 Python (Python의 운영자 페이지에 링크). 초보자의 경우 "a == b"를 "a는 b와 같음", "a는 b"로 해석하고 "a는 b"로 해석 할 수 있습니다. 아마도 이것이 초보자들이 파이썬에서 "=="와 "is"를 혼동하는 이유 일 것입니다.

심층 토론을하기 전에 먼저“==”와“is”를 사용하는 몇 가지 예를 보여 드리고자합니다.

>>> a = 5
>>> b = 5
>>> a == b
True
>>> a is b
True

간단 하죠?a == ba는 b둘 다 반환진실. 그런 다음 다음 예제로 이동하십시오.

>>> a = 1000
>>> b = 1000
>>> a == b
True
>>> a is b
False

뭐야?!? 첫 번째 예제에서 두 번째 예제로의 유일한 변경은 a와 b의 값이 5에서 1000까지입니다. 그러나 결과는 이미 "=="와 "is"사이에서 다릅니다. 다음으로 이동하십시오.

>>> a = []
>>> b = []
>>> a == b
True
>>> a is b
False

당신의 마음이 여전히 날아 가지 않은 경우 마지막 예가 있습니다.

>>> a = 1000
>>> b = 1000
>>> a == b
True
>>> a is b
False
>>> a = b
>>> a == b
True
>>> a is b
True

"=="에 대한 공식적인 연산은 평등이고 "is"에 대한 연산은 동일성입니다. 두 개체의 값을 비교하려면 "=="를 사용합니다. "a == b"는 "a의 값이 b의 값과 같은지 여부"로 해석되어야합니다. 위의 모든 예에서 a의 값은 항상 b의 값과 같습니다 (빈 목록 예의 경우에도). 따라서“a == b”는 항상 참입니다.

정체성을 설명하기 전에 먼저신분증함수. 다음을 사용하여 개체의 ID를 얻을 수 있습니다.신분증함수. 이 아이덴티티는 시간 내내이 객체에 대해 고유하고 일정합니다. 이것을이 객체의 주소로 생각할 수 있습니다. 두 개체의 ID가 동일한 경우 해당 값도 동일해야합니다.

>>> id(a)
2047616

연산자 "is"는 두 개체의 ID가 동일한 지 여부를 비교하는 것입니다. “a is b”는“a의 정체는 b의 정체와 같다”는 의미입니다.

"=="및 "is"의 실제 의미를 알고 나면 위의 예를 자세히 살펴볼 수 있습니다.

첫 번째는 첫 번째와 두 번째 예의 다른 결과입니다. 다른 결과를 보여주는 이유는 파이썬이 각 정수에 대해 고정 된 ID로 -5에서 256까지의 정수 배열 목록을 저장하기 때문입니다. 이 범위 내의 정수 변수를 할당하면 Python은이 변수의 ID를 배열 목록 내의 정수에 대한 ID로 할당합니다. 결과적으로 첫 번째 예에서 a와 b의 ID는 모두 배열 목록에서 가져 오므로 해당 ID는 물론 동일하므로a는 b사실이다.

>>> a = 5
>>> id(a)
1450375152
>>> b = 5
>>> id(b)
1450375152

그러나 일단이 변수의 값이이 범위를 벗어나면 내부 파이썬에는 그 값을 가진 객체가 없기 때문에 파이썬은이 변수에 대한 새로운 ID를 만들고이 변수에 값을 할당합니다. 이전에 말했듯이 ID는 각 생성에 대해 고유하므로 두 변수의 값이 동일하더라도 ID는 동일하지 않습니다. 그래서a는 b두 번째 예에서는 False입니다.

>>> a = 1000
>>> id(a)
12728608
>>> b = 1000
>>> id(b)
13620208

(추가 : 두 개의 콘솔을 열면 값이 여전히 범위 내에 있으면 동일한 ID를 얻을 수 있습니다. 그러나 값이 범위를 벗어나는 경우에는 해당되지 않습니다.)

Image for post

첫 번째 예제와 두 번째 예제의 차이점을 이해하면 세 번째 예제의 결과를 쉽게 이해할 수 있습니다. 파이썬은 "빈 목록"객체를 저장하지 않기 때문에 파이썬은 하나의 새 객체를 만들고 "빈 목록"값을 할당합니다. 두 목록이 비어 있거나 동일한 요소가 있어도 결과는 동일합니다.

>>> a = [1,10,100,1000]
>>> b = [1,10,100,1000]
>>> a == b
True
>>> a is b
False
>>> id(a)
12578024
>>> id(b)
12578056

마지막으로 마지막 예제로 이동합니다. 두 번째 예제와 마지막 예제의 유일한 차이점은 코드가 한 줄 더 있다는 것입니다.a = b. 그러나이 코드 줄은 변수의 운명을 변경합니다.. 아래 결과는 그 이유를 알려줍니다.

>>> a = 1000
>>> b = 2000
>>> id(a)
2047616
>>> id(b)
5034992
>>> a = b
>>> id(a)
5034992
>>> id(b)
5034992
>>> a
2000
>>> b
2000

보시다시피a = b, 정체성신원 변경.a = b신원을 할당...에. 그래서 둘 다동일한 정체성을 가지므로지금은 가치와 동일합니다, 즉 2000입니다.

마지막 예는 특히 개체가 목록 인 경우 예고없이 실수로 개체의 값을 변경할 수 있다는 중요한 메시지를 알려줍니다.

>>> a = [1,2,3]
>>> id(a)
5237992
>>> b = a
>>> id(b)
5237992
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3, 4]

위의 예에서, 둘 다동일한 신원을 가지고, 그 값은 동일해야합니다. 따라서 새 요소를 추가 한 후, 의 가치또한 영향을받습니다. 이러한 상황을 방지하기 위해 동일한 ID를 참조하지 않고 한 개체에서 다른 개체로 값을 복사하려는 경우 모든 방법에 대한 방법은 다음을 사용하는 것입니다.딥 카피모듈에서(Python 문서에 링크). 목록의 경우 수행 할 수도 있습니다.b = a [:].

>>> import copy
>>> a = [1,2,3]
>>> b= copy.deepcopy(a)
>>> id(a)
39785256
>>> id(b)
5237992

사용[:]새 변수에 요소 복사

>>> a = [1,2,3]
>>> id(a)
39785256
>>> b = a[:]
>>> id(b)
23850216
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3]

이제 두 사람의 차이점을 이해하고이 질문에 대해 다시는 초보자가되지 않기를 바랍니다.

Scikit-Learn (Python) : 데이터 과학자를위한 6 가지 유용한 트릭

scikit-learn (sklearn)을 사용하여 Python에서 기계 학습 모델을 개선하는 방법

Image for post

Scikit-learn (sklearn)강력한 오픈 소스입니다기계 학습 라이브러리Python 프로그래밍 언어 위에 구축되었습니다. 이 라이브러리에는 다양한 분류, 회귀 및 클러스터링 알고리즘을 포함하여 기계 학습 및 통계 모델링을위한 많은 효율적인 도구가 포함되어 있습니다.

이 기사에서는 scikit-learn 라이브러리와 관련된 6 가지 트릭을 보여 주어 특정 프로그래밍 방식을 좀 더 쉽게 할 수 있습니다.

1. 임의 더미 데이터 생성

임의의 '더미'데이터를 생성하기 위해의 경우 기능분류 데이터, 및의 경우 기능회귀 데이터. 이것은 디버깅 할 때나 (작은) 임의의 데이터 세트에서 특정 작업을 시도하려는 경우에 매우 유용합니다.

아래에서는 4 개의 특성 (X에 있음)과 클래스 레이블 (y에 있음)로 구성된 10 개의 분류 데이터 포인트를 생성합니다. 여기서 데이터 포인트는 네거티브 클래스 (0) 또는 포지티브 클래스 (1)에 속합니다.

여기에서 X는 생성 된 데이터 포인트에 대한 4 개의 특성 열로 구성됩니다.

Image for post

그리고 y에는 각 데이터 요소의 해당 레이블이 포함됩니다.

2. 결 측값 대치

Scikit-learn은돌리다누락 된 값. 여기에서는 두 가지 접근 방식을 고려합니다. 그만큼클래스는 결 측값을 대치하기위한 기본 전략을 제공합니다 (예 : 평균 또는 중앙값을 통해). 보다 정교한 접근 방식클래스는 다음을 사용하여 결 측값을 채우기위한 대치를 제공합니다.K- 최근 접 이웃접근하다. 각 누락 된 값은특정 기능에 대한 값이있는 최근 접 이웃. 이웃 값은 균일하게 평균화되거나 각 이웃까지의 거리에 따라 가중치가 부여됩니다.

아래에서는 두 대치 방법을 사용하는 예제 응용 프로그램을 보여줍니다.

>>> 2.21298305

X [1, 2]를 누락 된 값으로 변환합니다.

Image for post

먼저 우리는단순 전가:

Image for post

결과 값-0.143476.

다음으로 우리는KNN 입력, 2 개의 가장 가까운 이웃이 고려되고 이웃에 균일 한 가중치가 부여됩니다.

Image for post

결과 값0.997105(= 0.5 * (1.904188 + 0.090022)).

3. 파이프 라인을 사용하여 여러 단계를 함께 연결

그만큼관로scikit-learn의 도구는 기계 학습 모델을 단순화하는 데 매우 유용합니다. 파이프 라인을 사용하여 여러 단계를 하나로 연결하여 데이터가 고정 된 일련의 단계를 거치도록 할 수 있습니다. 따라서 모든 단계를 개별적으로 호출하는 대신 파이프 라인은 모든 단계를 하나의 시스템으로 연결합니다. 이러한 파이프 라인을 생성하기 위해 우리는함수.

아래에는 파이프 라인이 누락 된 값 (있는 경우)을 대치하는 대치 자와 로지스틱 회귀 분류기로 구성된 간단한 예가 나와 있습니다.

이제 파이프 라인을 사용하여 훈련 데이터를 맞추고 테스트 데이터를 예측할 수 있습니다. 먼저 훈련 데이터가 대치되어 로지스틱 회귀 분류기를 사용하여 훈련을 시작합니다. 그런 다음 테스트 데이터의 클래스를 예측할 수 있습니다.

4. joblib를 사용하여 파이프 라인 모델 저장

scikit-learn을 통해 생성 된 파이프 라인 모델은 다음을 사용하여 쉽게 저장할 수 있습니다.joblib. 모델에 큰 데이터 배열이 포함 된 경우 각 배열은 별도의 파일에 저장됩니다. 로컬에 저장되면 새 응용 프로그램에서 사용할 모델을 쉽게로드 (또는 복원) 할 수 있습니다.

이제 피팅 된 파이프 라인 모델은 다음을 통해 컴퓨터에 저장 (덤프)됩니다.. 이 모델은, 그리고 나중에 평소와 같이 적용 할 수 있습니다.

5. 혼동 행렬 플로팅

혼동 행렬테스트 데이터 세트에 대한 분류기의 성능을 설명하는 데 사용되는 테이블입니다. 여기서 우리는이진 분류 문제즉, 관측 값이 속할 수있는 두 가지 가능한 클래스가 있습니다. "예"(1) 및 "아니요"(0).

예제 이진 분류 문제를 만들고 다음을 사용하여 해당 정오 행렬을 표시해 보겠습니다.함수:

Image for post

여기에있는 혼동 행렬을 통해 멋진 방식으로 시각화했습니다.

  • 93참 양성 (TP);
  • 97참 음성 (TN);
  • 거짓 양성 (FP);
  • 7거짓 음성 (FN).

따라서 우리는 (93 + 97) / 200 = 95 %의 정확도 점수에 도달했습니다.

6. 의사 결정 트리 시각화

가장 잘 알려진 분류 알고리즘 중 하나는의사 결정 트리, 특징 매우 직관적 인 나무 모양의 시각화. 의사 결정 트리의 아이디어는 설명 기능을 기반으로 데이터를 더 작은 영역으로 분할하는 것입니다. 그런 다음 테스트 관찰이 속한 지역에서 훈련 관찰 중 가장 일반적으로 발생하는 클래스는 예측입니다. 데이터가 지역으로 분할되는 방법을 결정하려면 다음을 적용해야합니다.분할 측정각 기능의 관련성과 중요성을 결정합니다. 잘 알려진 분할 측정으로는 정보 이득, 지니 지수 및 교차 엔트로피가 있습니다.

아래에서는 사용 방법에 대한 예를 보여줍니다.scikit-learn의 기능 :

Image for post

이 예에서는 네거티브 클래스 (0) 또는 포지티브 클래스 (1)에 속하는 40 개의 훈련 관찰에 대한 의사 결정 트리를 피팅하고 있습니다.이진 분류 문제. 트리에는 두 가지 종류의 노드가 있습니다.내부 노드(예측 자 공간이 더 분할 된 노드) 또는터미널 노드(종료점). 두 노드를 연결하는 트리의 세그먼트를가지.

의사 결정 트리의 각 노드에 대해 제공되는 정보를 자세히 살펴 보겠습니다.

  • 그만큼분할 기준 used in the particular node is shown as e.g. ‘F2 <= -0.052’. This means that every data point that satisfies the condition that the value of the second feature is below -0.052 belongs to the newly formed region to the left, and the data points that do not satisfy the condition belong to the region to the right of the internal node.
  • 그만큼지니 지수여기서 분할 측정으로 사용됩니다. 지니 지수 (불결)는 특정 요소가 무작위로 선택되었을 때 잘못 분류되는 정도 또는 확률을 측정합니다.
  • 노드의 '샘플'은 특정 노드에서 발견 된 훈련 관찰의 수를 나타냅니다.
  • 노드의 '값'은 각각 네거티브 클래스 (0)와 포지티브 클래스 (1)에서 찾은 훈련 관찰의 수를 나타냅니다. 따라서 value = [19,21]은 19 개의 관측치가 네거티브 클래스에 속하고 21 개의 관측치가 해당 특정 노드의 포지티브 클래스에 속함을 의미합니다.

결론

이 기사에서는 sklearn에서 기계 학습 모델을 개선하기위한 6 가지 유용한 scikit-learn 트릭을 다뤘습니다. 이 트릭이 어떤 식 으로든 도움이 되었기를 바랍니다. scikit-learn 라이브러리를 사용할 때 다음 프로젝트에서 행운을 빕니다!

Python 3.9의 새로운 기능

최신 Python 버전에 포함 된 최고의 기능 살펴보기

Image for post
~의 사진파블로 게레로의 위에Unsplash

다시 한 번 새로운 버전의 Python이 임박했습니다. 이제 베타 버전 (3.9.0b3)에서 곧 Python 3.9의 전체 릴리스를 볼 수 있습니다.

최신 기능 중 일부는 매우 흥미롭고 출시 후 사용되는 것을 보면 놀라 울 것입니다. 다음 내용을 다룹니다.

  • 사전 통합 연산자
  • 유형 힌트
  • 두 가지 새로운 문자열 메서드
  • 새로운 파이썬 파서— 이것은 매우 멋지다

이러한 새로운 기능과 사용 방법을 먼저 살펴 보겠습니다.

(이탈리아어 버전)

사전 연합

세련된 구문으로 내가 가장 좋아하는 새로운 기능 중 하나입니다. 두 개의 사전이있는 경우병합해야하므로 이제조합원.

우리는병합운영자|:

a = {1: 'a', 2: 'b', 3: 'c'}
b = {4: 'd', 5: 'e'}
c = a | b
print(c)

[밖]:{1 : 'a', 2 : 'b', 3 : 'c', 4 : 'd', 5 : 'e'}

그리고최신 정보운영자| =, 원본 사전을 업데이트합니다.

a = {1: 'a', 2: 'b', 3: 'c'}
b = {4: 'd', 5: 'e'}
a |= b
print(a)

[밖]:{1 : 'a', 2 : 'b', 3 : 'c', 4 : 'd', 5 : 'e'}

우리 사전이공통 키, 두 번째 사전의 키-값 쌍이 사용됩니다.

a = {1: 'a', 2: 'b', 3: 'c', 6: 'in both'}
b = {4: 'd', 5: 'e', 6: 'but different'}
print(a | b)

[밖]:{1 : 'a', 2 : 'b', 3 : 'c',6 : '하지만 다르다', 4 : 'd', 5 : 'e'}

Iterables로 사전 업데이트

의 또 다른 멋진 동작| =운영자는 능력입니다최신 정보새로운 키-값 쌍이있는 사전반복 가능객체 — 목록 또는 생성기와 같은 :

a = {'a': 'one', 'b': 'two'}
b = ((i, i**2) for i in range(3))
a |= b
print(a)

[밖]:{ 'a': 'one', 'b': 'two',0 : 0, 1 : 1, 2 : 4}

표준 유니온 연산자로 동일하게 시도하면|우리는 얻을 것이다TypeError그것은 사이의 결합 만 허용하기 때문에dict유형.

Image for post

유형 힌트

Python은 동적으로 입력되므로 코드에서 데이터 유형을 지정할 필요가 없습니다.

이것은 괜찮지 만 때로는 혼란 스러울 수 있으며 갑자기 Python의 유연성이 다른 무엇보다 성가신 문제가됩니다.

3.5부터 유형을 지정할 수 있었지만 꽤 번거 롭습니다. 이 업데이트는 진정으로 변경되었습니다. 예를 들어 보겠습니다.

Image for post
유형 힌트 없음 (왼쪽) v 3.9의 유형 힌트 (오른쪽)

우리의add_int함수, 우리는 분명히 같은 숫자를 자체에 추가하고 싶습니다 (정의되지 않은 신비한 이유 때문에). 하지만 저희 에디터는 그것을 모르고 있습니다.+— 따라서 경고가 제공되지 않습니다.

이제 우리가 할 수있는 것은 예상되는 입력 유형을 다음과 같이 지정하는 것입니다.int. 이를 사용하여 편집자는 즉시 문제를 파악합니다.

포함 된 유형에 대해서도 매우 구체적으로 알 수 있습니다. 예를 들면 다음과 같습니다.

Image for post

유형 힌트는 모든 곳에서 사용할 수 있으며 새로운 구문 덕분에 이제 훨씬 깔끔해 보입니다.

Image for post
sum_dict의 인수를 dict로 지정하고 반환 된 값을 int로 지정합니다. 테스트 정의 중에 유형도 결정합니다.

문자열 방법

다른 새로운 기능만큼 화려하지는 않지만 특히 유용하므로 언급 할 가치가 있습니다. 접두사 및 접미사를 제거하기위한 두 가지 새로운 문자열 메서드가 추가되었습니다.

"Hello world".removeprefix("He")

[밖]:"llo 세계"

Hello world".removesuffix("ld")

[밖]:"안녕하세요 세상"

새 파서

이것은 보이지 않는 변화에 가깝지만 Python의 미래 진화에 가장 중요한 변화 중 하나가 될 가능성이 있습니다.

파이썬은 현재 주로 LL (1) 기반 문법을 사용하는데, 이는 LL (1) 파서에 의해 파싱 될 수 있습니다.이 문법은 코드를 위에서 아래로, 왼쪽에서 오른쪽으로, 단 하나의 토큰으로 미리보기로 파싱합니다.

자, 저는 이것이 어떻게 작동하는지 거의 알지 못합니다.하지만이 방법을 사용하기 때문에 파이썬에서 현재 몇 가지 문제를 알려 드릴 수 있습니다.

  • 파이썬은 비 LL (1) 문법을 포함합니다; 이로 인해 현재 문법의 일부는 해결 방법을 사용하여 불필요한 복잡성을 만듭니다.
  • LL (1)은 Python 구문에 제한을 만듭니다 (가능한 해결 방법 없음).이번 호다음 코드는 현재 파서를 사용하여 구현할 수 없음을 강조합니다.SyntaxError) :
with (open("a_really_long_foo") as foo,
open("a_really_long_bar") as bar):
pass
  • LL (1)은 파서에서 왼쪽 재귀로 중단됩니다. 특정 재귀 구문이 구문 분석 트리에서 무한 루프를 일으킬 수 있음을 의미합니다.귀도 반 로섬, Python의 창시자,여기에 설명.

이러한 모든 요소 (그리고 단순히 이해할 수없는 더 많은 요소)는 Python에 큰 영향을줍니다. 그들은 언어의 진화를 제한합니다.

다음을 기반으로하는 새로운 파서못,Python 개발자에게 훨씬 더 많은 유연성을 제공 할 것입니다.Python 3.10 이상.

이것이 곧 출시 될 Python 3.9에서 기대할 수있는 모든 것입니다. 정말 기다릴 수 없다면 최신 베타 릴리스 인 3.9.0b3여기에서 사용할 수 있습니다.

질문이나 제안이 있으시면 언제든지트위터또는 아래 의견에.

읽어 주셔서 감사합니다!

이 기사를 즐겼고 Python의 잘 알려지지 않은 기능에 대해 더 알고 싶다면 이전 기사에 관심이있을 것입니다.

더 이상 기본 플롯은 없습니다

Seaborn 및 Matplotlib를 사용하여 데이터 시각화를 업그레이드하기위한 빠른 가이드

9 월 2 일 · 4최소 읽기

"기본 파란색 막대 그림이 하나 더 표시되면…"

Flatiron School NYC에서 제 연구의 첫 번째 모듈을 마친 후 Seaborn과 Matplotlib를 사용하여 플롯 사용자 정의 및 디자인을 시작했습니다. 수업 중 낙서와 마찬가지로, 저는 jupyter 노트북에 다른 스타일의 플롯을 코딩하기 시작했습니다.

이 기사를 읽고 나면 모든 노트북에 대해 최소한 하나의 빠른 스타일의 플롯 코드를 염두에 두어야합니다.

더 이상 기본값, 상점 브랜드, 기본 플롯,부디!

아무것도 할 수 없다면 Seaborn을 사용하십시오.

괜찮아 보이는 플롯을 만드는 데 5 초가 주어지지 않으면 세상이 붕괴 될 것입니다. Seaborn을 사용하십시오!

Matplotlib를 사용하여 빌드 된 Seaborn은 즉각적인 디자인 업그레이드가 될 수 있습니다. x 및 y 값의 레이블과 기본이 아닌 기본 색 구성표를 자동으로 할당합니다. (— IMO : 좋은, 명확하고, 잘 포맷 된 열 레이블링과 데이터 정리를 통해 보상합니다.) Matplotlib는이를 자동으로 수행하지 않지만 플롯하려는 항목에 따라 항상 x와 y를 정의하도록 요청하지 않습니다.

다음은 Seaborn을 사용하는 것과 사용자 정의가없는 Matplotlib를 사용하는 동일한 플롯입니다.

Seaborn — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — Matplotlib

위에서부터 스타일링

시각화하는 데이터에 따라 스타일과 배경을 변경하면 해석 가능성과 가독성이 높아질 수 있습니다. 코드 맨 위에 스타일을 구현하여이 스타일을 계속 사용할 수 있습니다.

스타일 라인에 대한 전체 문서 페이지가 있습니다.Matplotlib.

스타일링은 가져온 라이브러리 후에 간단한 코드 줄로 스타일을 설정하는 것처럼 간단 할 수 있습니다. GGPlot은 배경을 회색으로 변경하고 특정 글꼴을 사용합니다. 시도해 볼 수있는 더 많은 스타일이 있습니다.

Image for post
플롯 스타일링을 사용하여 Matplotlib (위) Seaborn (아래) Seaborn이 플롯에 자동으로 레이블을 지정했습니다.

XKCD; 건방진 약간의 여분

장난. 전문가가 아닙니다. 하지만 너무 재미 있습니다.

Image for post

이 XKCD 스타일을 사용하는 경우 plt.rcdefaults ()…를 실행하여 기본값을 재설정 할 때까지 계속됩니다.

예쁜 색상 OMG!

-Seaborn 단색 이름. Matplotlib에서도 사용할 수 있습니다. Matplotlib.org의 이미지

매력적인 플롯을 만드십시오. 색 이론이 여기에서 작용합니다. Seaborn에는 Matplot lib에서도 사용할 수있는 다양한 팔레트가 있으며 직접 만들 수도 있습니다.

단색 : 하나와 완료

  • 위는 선, 산점도 등을 변경하기 위해 호출 할 수있는 단일 색상 이름 목록입니다.

게으른? Seaborn의 기본 테마

  • 기본값의 6 가지 변형이 있습니다.
  • 깊은,음소거,파스텔,선명한,어두운, 및색맹
  • x, y 및 데이터를 전달한 후 색상을 인수로 사용
  • 색상 =‘색맹’

어렵지 않고 스마트하게 작업 : Pre-Fab 팔레트

색상 팔레트()seaborn 팔레트 또는 matplotlib 컬러 맵을 허용합니다.

  • 개인적으로 좋아하는 것은 'magma'와 'viridis'입니다.

제어 괴물? 사용자 지정 팔레트 / 16 진수 코드 사용

  • pretty_colors = [“# FF4653”,“# ​​EE7879”,“# DDEDF4”,“# 2A3166”]
  • 온라인에서 찾을 수있는 16 진수 코드를 전달합니다.
  • 종류를 만들고 세부 사항을 추가하고 더 많은 사용자 정의 팔레트를 위해 매개 변수를 가지고 놀아보십시오.
색상 팔레트를 선택하는 다양한 방법.

모든 것에는 레이블이 있어야합니다

여기에서는 Matplotlib를 사용하고 있지만 명확하고 간결한 해석을 위해 각 줄, 제목, x 및 y 레이블 및 범례에 대해 단일 색상을 추가했습니다.

모든 변수에는 집이 있고 지금은 기쁨을 불러 일으 킵니다. — Marie Kondo가 어떻게 코딩할지 생각해보십시오.

간단하지만 명확합니다.

전반적으로 꽤 간단 하죠? 글쎄, 이제 당신은 그 추악한 기본 플롯에 대한 변명의 여지가 없습니다. 이 정보가 도움이 되었기를 바랍니다. 설명서에는 색상과 디자인에 대한 훨씬 더 많은 내용이 포함되어 있으므로 이러한 빠른 팁을 숙지했으면 아래 설명서를 참조하십시오!

즐겨? 우리 친구하자. 나를 따라와GitHub,인스 타 그램, 및매질

Corey Schaffer의 오늘의 데이터: 개발자 급여 데이터

선적 서류 비치:

Seaborn

Matplotlib

기타 리소스 :

Matplotlib의 XKCD

확실한 데이터 과학자 환경 설정

Two Data Scientists at work
직장에서 두 명의 데이터 과학자

소개 및 동기

In this post I would like to describe in detail our setup and development environment (hardware & software) and how to get it, step by step.

  • 대부분의 라이브러리는 추가 구성없이 바로 작동합니다.
  • 스몰 데이터에서 빅 데이터까지, 그리고 표준 머신 러닝 모델에서 딥 러닝 프로토 타이핑에 이르기까지 데이터 관련 작업의 전체 스펙트럼을 다룰 수 있습니다.
  • 값 비싼 하드웨어와 소프트웨어를 구입하기 위해 은행 계좌를 깰 필요가 없습니다.

하드웨어

노트북에는 다음이 있어야합니다.

  • 강력한 프로세서. 코어가 4 개인 Intel i5 또는 i7 이상. 명백한 이유로 데이터를 처리하는 동안 많은 시간을 절약 할 수 있습니다.
  • 최소 4GB RAM의 NVIDIA GPU. 간단한 딥 러닝 모델을 프로토 타입하거나 미세 조정해야하는 경우에만 가능합니다. 해당 작업에 대해 거의 모든 CPU보다 훨씬 빠릅니다.랩톱에서 처음부터 심각한 딥 러닝 모델을 훈련 할 수는 없습니다..
  • 좋은 냉각 시스템. 최소한 몇 시간 동안 워크로드를 실행합니다. 노트북이 녹지 않고 처리 할 수 ​​있는지 확인하십시오.
  • 256GB 이상의 SSD이면 충분합니다.
  • 더 큰 SSD, 더 많은 RAM을 추가하거나 배터리를 쉽게 교체하는 등의 기능을 업그레이드 할 수 있습니다.
david-laptop specs
david-laptop 사양
Lenovo Thinkpad P52
Lenovo Thinkpad P52
  • 끔찍한 공급 업체 종속으로 인해 다른 대안으로 변경하는 데 막대한 비용이 듭니다.
  • NVIDIA GPU를 사용할 수 없으므로 랩톱에서 딥 러닝 프로토 타이핑은 잊어 버리십시오.
  • 마더 보드에 납땜되어 있으므로 하드웨어를 업그레이드 할 수 없습니다. 더 많은 RAM이 필요한 경우 새 노트북을 구입해야합니다.

운영 체제

데이터 과학 용으로 사용되는 운영 체제는 Ubuntu의 최신 LTS (장기 지원)입니다. 이 글을 쓰는 시점에서Ubuntu 20.04 LTS최신입니다.

Ubuntu 20.04 LTS
Ubuntu 20.04 LTS
  • 데이터 작업을 할 때 보안은 설정의 핵심이되어야합니다. Linux는 기본적으로 Windows 또는 OS X보다 더 안전하며 소수의 사람들이 사용하기 때문에 대부분의 악성 소프트웨어는 Linux에서 실행되도록 설계되지 않았습니다.
  • 데스크탑과 서버 모두에서 가장 많이 사용되는 Linux 배포판이며 훌륭하고 지원적인 커뮤니티입니다. 제대로 작동하지 않는 문제를 발견하면 도움을 받거나 문제 해결 방법에 대한 정보를 찾는 것이 더 쉽습니다.
  • 대부분의 서버는 Linux 기반입니다., 해당 서버에 코드를 배포하고 싶을 것입니다. 프로덕션에 배포 할 환경에 가까울수록 좋습니다. 이것이 Linux를 플랫폼으로 사용하는 주된 이유 중 하나입니다.
  • 그것은 위대한패키지 관리자거의 모든 것을 설치하는 데 사용할 수 있습니다.
Uncheck third-party software while installation
설치하는 동안 타사 소프트웨어 선택 취소

NVIDIA 드라이버

NVIDIA Linux 지원은 수년 동안 커뮤니티의 불만 중 하나였습니다. 유명한 것을 기억하십시오.

Linus Torvalds가 NVIDIA에 대해 이야기
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt install nvidia-driver-440
NVIDIA X Server Settings
NVIDIA X 서버 설정
nvidia-smi
nvidia-smi

단말기

기본 그놈 터미널은 괜찮지 만터미네이터, 터미널 창을 수직으로 분할 할 수있는 강력한 터미널 에뮬레이터CTR+시프트+이자형수평으로CTR+시프트+영형, 동시에 여러 터미널에 명령을 브로드 캐스트합니다. 다양한 서버 또는 클러스터를 설정하는 데 유용합니다.

Terminator
터미네이터
sudo apt install terminator

VirtualBox

VirtualBox는 다음을 실행할 수있는 소프트웨어입니다.사실상현재 운영 체제 세션 내의 다른 컴퓨터. 다른 운영 체제를 실행할 수도 있습니다 (Linux 내부의 Windows 또는 그 반대).

sudo apt install virtualbox

Python, R 등 (Miniconda 포함)

Python은 이미 Ubuntu에 포함되어 있습니다. 하지만 너시스템 Python을 사용하거나 시스템 전체에 분석 라이브러리를 설치해서는 안됩니다.. 그렇게하면 시스템 파이썬이 깨질 수 있으며, 고치는 것은 어렵습니다.

  • Miniconda : conda 패키지 관리자 만 포함합니다. conda 또는 pip를 통해 모든 기존 라이브러리에 계속 액세스 할 수 있지만 해당 라이브러리는 필요할 때 다운로드 및 설치됩니다. 이 옵션을 사용하면 시간과 메모리를 절약 할 수 있습니다.
bash Miniconda3-latest-Linux-x86_64.sh
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/david/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/david/miniconda3/etc/profile.d/conda.sh" ]; then
. "/home/david/miniconda3/etc/profile.d/conda.sh"
else
export PATH="/home/david/miniconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
콘다 도움말
conda install -c conda-forge conda-pack

Jupyter

Jupyter는 대화 형 프로그래밍 환경이 필요한 개발을 위해 데이터 과학자에게 필수입니다.

conda create -n jupyter_env
conda activate jupyter_env
conda install python=3.7
conda install -c conda-forge jupyterhub jupyterlab nodejs nb_conda_kernels
[Unit]
Description=JupyterHub
After=network.target
[Service]
User=root
Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/<your_user>/miniconda3/envs/jupyter_env/bin:/home/<your_user>/miniconda3/bin"
ExecStart=/home/<your_user>/miniconda3/envs/jupyter_env/bin/jupyterhub
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start jupyterhub
sudo systemctl enable jupyterhub
JupyterHub login page
JupyterHub 로그인 페이지
Jupyter (Classic)
Jupyter (클래식)
Image for post
Jupyter (실험실)
JupyterHub control panel
JupyterHub 제어판

십오 일

파이썬

파이썬은 우리의 기본 언어입니다.WhiteBox.

  • 네이티브 conda 지원을 포함한 Python 환경.
  • 디버거.
  • Docker 통합.
  • Git 통합.
  • 과학 모드 (pandas DataFrame 및 NumPy 배열 검사).
PyCharm Professional
PyCharm Professional
  • Jupyter: if you have doubts about when you should be using Jupyter or PyCharm and call yourself a Data <whatever>, please attend 부트 캠프 중 하나우리는 최대한 빨리 가르칩니다.
sudo snap install pycharm-community --classic

스칼라

Scala는 기본 Spark로 빅 데이터 프로젝트에 사용하는 언어이지만 PySpark로 전환하고 있습니다.

sudo snap install intellij-idea-community --classic

빅 데이터

좋아, 당신은 당신의 노트북에서 실제로 빅 데이터를 수행하지 않을 것입니다. 빅 데이터 프로젝트에 참여하는 경우 회사 또는 고객이 적절한 Hadoop 클러스터를 제공 할 것입니다.

conda install pyspark openjdk
from pyspark.sql import SparkSession

spark = SparkSession.builder. \
appName('your_app_name'). \
config('spark.sql.session.timeZone', 'UTC'). \
config('spark.driver.memory', '16G'). \
config('spark.driver.maxResultSize', '2G'). \
getOrCreate()
  • 모딘: 멀티 코어 및 아웃 오브 코어 계산을 지원하는 Pandas API를 복제합니다. 많은 코어 (32, 64)가있는 강력한 분석 서버에서 작업하고 pandas를 사용하려는 경우 특히 유용합니다. 일반적으로 코어 당 성능이 좋지 않기 때문에 Modin을 사용하면 계산 속도를 높일 수 있습니다.

데이터베이스 도구

때로는 다양한 DB 기술과 연결하고 쿼리를 만들고 데이터를 탐색 할 수있는 도구가 필요합니다. 우리의 선택은DBeaver:

DBeaver Community
DBeaver 커뮤니티
  • 연결을위한 고급 네트워킹 요구 사항 (예 : SSH 터널 등)
sudo snap install dbeaver-ce

기타

우리에게 중요한 기타 특정 도구 및 앱은 다음과 같습니다.

  • 느슨하게:sudo 스냅 설치 슬랙-클래식.
  • 전보 데스크탑 :sudo snap install telegram-desktop.
  • Nextcloud :sudo apt install nextcloud-desktop nautilus-nextcloud.
  • Thunderbird Mail : 기본적으로 설치됩니다.
  • Zoom : 다음에서 수동으로 다운로드여기.
  • Google 크롬 : 다음에서 수동으로 다운로드여기.

데이터 수집,데이터 과학

Python 및 R을 사용하여 PDF 파일에서 데이터 추출

Demonstration of parsing PDF files using Python & R API

Image for post

데이터는 추론 분석, 예측 분석 또는 규범 분석과 같은 데이터 과학의 모든 분석에서 핵심입니다. 모델의 예측력은 모델 구축에 사용 된 데이터의 품질에 따라 달라집니다. 데이터는 텍스트, 표, 이미지, 음성 또는 비디오와 같은 다양한 형태로 제공됩니다. 대부분의 경우 분석에 사용되는 데이터는 추가 분석에 적합한 형식으로 렌더링하기 위해 마이닝, 처리 및 변환되어야합니다.

대부분의 분석에 사용되는 가장 일반적인 유형의 데이터 세트는 쉼표로 구분 된 값 (csv) 테이블. 그러나 휴대용 문서 형식 (pdf)파일은 가장 많이 사용되는 파일 형식 중 하나입니다. 모든 데이터 과학자는pdf파일을 만들고 데이터를 "csv”그런 다음 분석 또는 모델 구축에 사용할 수 있습니다.

에서 데이터 복사pdf줄 단위 파일은 너무 지루하며 프로세스 중 인적 오류로 인해 종종 손상 될 수 있습니다. 따라서 데이터를 가져 오는 방법을 이해하는 것이 매우 중요합니다.pdf효율적이고 오류없는 방식으로.

이 기사에서는 데이터 테이블을 추출하는 데 초점을 맞출 것입니다.pdf파일. 텍스트 또는 이미지와 같은 다른 유형의 데이터를 추출하기 위해 유사한 분석을 수행 할 수 있습니다.pdf파일. 이 기사는 pdf 파일에서 숫자 데이터를 추출하는 데 중점을 둡니다. pdf 파일에서 이미지를 추출하기 위해 python에는 다음과 같은 패키지가 있습니다.광산 수레PDF에서 이미지, 텍스트 및 모양을 추출하는 데 사용할 수 있습니다.

데이터 테이블을pdf파일을 추가 분석 및 모델 구축에 적합한 형식으로 변환합니다. 하나는 Python을 사용하고 다른 하나는 R을 사용하는 두 가지 예를 제시합니다.이 기사에서는 다음 사항을 고려합니다.

  1. 에서 데이터 테이블 추출pdf파일.

예제 1 : Python을 사용하여 PDF 파일에서 테이블 추출

아래 표를 a에서 추출한다고 가정 해 보겠습니다.pdf파일.

— — — — — — — — — — — — — — — — — — — — — — — — —

Image for post

— — — — — — — — — — — — — — — — — — — — — — — — —

a) 테이블을 복사하여 Excel에 붙여넣고 파일을 table_1_raw.csv로 저장합니다.

데이터는 1 차원 형식으로 저장되며 재구성, 정리 및 변환되어야합니다.

b) 필요한 라이브러리 가져 오기

import pandas as pd
import numpy as np

c) 원시 데이터 가져 오기 및 데이터 재구성

df=pd.read_csv("table_1_raw.csv", header=None)df.values.shapedf2=pd.DataFrame(df.values.reshape(25,10))column_names=df2[0:1].values[0]df3=df2[1:]df3.columns = df2[0:1].values[0]df3.head()
Image for post

d) 문자열 처리 도구를 사용하여 데이터 랭 글링 수행

위의 표에서 알 수 있습니다.x5,x6, 및x7백분율로 표시되므로 백분율 (%) 기호를 제거해야합니다.

df4['x5']=list(map(lambda x: x[:-1], df4['x5'].values))df4['x6']=list(map(lambda x: x[:-1], df4['x6'].values))df4['x7']=list(map(lambda x: x[:-1], df4['x7'].values))

e) 데이터를 숫자 형식으로 변환

열의 열 값은x5,x6, 및x7데이터 유형이 문자열이므로 다음과 같이 숫자 데이터로 변환해야합니다.

df4['x5']=[float(x) for x in df4['x5'].values]df4['x6']=[float(x) for x in df4['x6'].values]df4['x7']=[float(x) for x in df4['x7'].values]

f) 변환 된 데이터의 최종 형식보기

df4.head(n=5)
Image for post

g) 최종 데이터를 csv 파일로 내보내기

df4.to_csv('table_1_final.csv',index=False)

예 2 : R을 사용하여 PDF 파일에서 테이블 추출

이 예제는 테이블에서 테이블을 추출하는 방법을 보여줍니다.pdfR에서 데이터 랭 글링 기술을 사용하는 파일입니다.pdf파일 이름trade_report.pdf:

— — — — — — — — — — — — — — — — — — — — — — — — —

— — — — — — — — — — — — — — — — — — — — — — — —

테이블을 추출하고 데이터를 랭 글링 한 다음 추가 분석을 위해 준비된 데이터 프레임 테이블로 변환하려고합니다. 그러면 최종 데이터 테이블을 쉽게 내보내고 "csv”파일. 특히 다음을 수행하고자합니다.

i) 칼럼에생성물, ETC-USD 제품에서 USD를 제거하고 싶습니다.

ii) 분할데이트열을 두 개의 별도 열로, 즉,데이트시각.

iii) 열에서 USD 제거회비합계.

이 예제의 데이터 세트와 코드는이 저장소에서 다운로드 할 수 있습니다.https://github.com/bot13956/extract_table_from_pdf_file_using_R.

a) 필요한 라이브러리 가져 오기

library("tidyverse")library("stringr")library("pdftools")

b) 표 추출 및 텍스트 파일로 변환

# define file pathpdf_file <- file.path("C:\\Users\\btayo\\Desktop\\TRADE", "trade_report.pdf")# convert pdf file to text (txt) filetext <- pdf_text(pdf_file)

c) 문자열 처리 도구를 사용하여 데이터를 정리하고 정리하기 위해 데이터를 랭 글링합니다.

tab <- str_split(text, "\n")[[1]][6:31]tab[1] <- tab[1]%>%str_replace("\\.","")
%>%str_replace("\r","")
col_names <- str_replace_all(tab[1],"\\s+"," ")
%>%str_replace(" ", "")
%>%str_split(" ")
%>%unlist()
col_names <- col_names[-3]col_names[2] <- "Trade_id"col_names <- append(col_names, "Time", 5)col_names <- append(col_names,"sign",9)length(col_names)==11tab <- tab[-1]dat <- data.frame(
x=tab%>%str_replace_all("\\s+"," ")
%>%str_replace_all("\\s*USD","")
%>%str_replace(" ",""),stringsAsFactors = FALSE)
data <- dat%>%separate(x,col_names,sep=" ")data<-data%>%mutate(total=paste(data$sign,data$Total,sep=""))
%>%select(-c(sign,Total))
names(data)<- names(data)%>%tolower()data$product <- data$product%>%str_replace("-$","")

d) 변환 된 데이터의 최종 형식보기

data%>%head()
Image for post

예제 2의 데이터 세트와 코드는이 저장소에서 다운로드 할 수 있습니다.https://github.com/bot13956/extract_table_from_pdf_file_using_R.

요약하면 데이터 테이블을pdf파일. 이후pdf파일은 매우 일반적인 파일 유형이므로 모든 데이터 과학자는 파일에 저장된 데이터를 추출하고 변환하는 기술에 익숙해야합니다.pdf파일.

고급 Python : Itertools 라이브러리 — Python 언어의 보석

꼭 알아야 할 놀라운 Python 라이브러리의 기능 설명

Python Itertools 라이브러리가 Python의 보석으로 간주된다는 사실을 알고 계셨습니까?

일부 사용자는 가장 멋지고 놀라운 Python 라이브러리 중 하나로 간주합니다.

Itertools 모듈을 사용하여 애플리케이션을 풍부하게하고 단시간에 견고한 작업 솔루션을 만들 수 있습니다.

Image for post
~의 사진Ilze Lucero의 위에Unsplash

이 기사는 독자가 프로젝트에서 Itertools 모듈을 사용하는 방법을 이해하는 데 도움이 될 것입니다.

이것은 Python 개발자를위한 고급 수준의 주제이며 Python 프로그래밍 언어를 사용하려는 모든 사람에게 권장합니다.

초보자부터 고급 수준까지 Python 프로그래밍 언어를 이해하고 싶다면 아래 기사를 적극 권장합니다.

기사 목표

이 기사에서는 Itertools 라이브러리에 대한 개요를 제공합니다.

이 기사를 세 부분으로 나누었으며 각 부분은 Itertools 라이브러리의 특정 기능을 설명합니다.

특히 다음과 같이 설명하겠습니다.

  1. 무한 반복자
  2. 반복기 종료
  3. 조합 반복자

Itertools 라이브러리를 사용하여 더 짧은 시간에 정확하고 메모리 효율적이며 안정적인 애플리케이션을 구현할 수 있습니다.

이 기사는 itertools 버전 2.3 및 Python 3.8을 기반으로합니다.

Python 코드에서 itertools 라이브러리를 가져옵니다.

import itertools as it
Image for post
~의 사진의식적인 디자인의 위에Unsplash

참고 : 반복 자란 무엇입니까?

반복자__다음__방법. 상태가 있습니다. 상태는 반복 중에 실행을 기억하는 데 사용됩니다. 따라서 반복기는 현재 상태를 알고 있으며 이는 메모리를 효율적으로 만듭니다. 이것이 반복기가 메모리 효율적이고 빠른 애플리케이션에서 사용되는 이유입니다.

무한한 데이터 스트림 (파일 읽기 등)을 열고 다음 항목 (예 : 파일의 다음 줄)을 가져올 수 있습니다. 그런 다음 항목에 대한 작업을 수행하고 다음 항목으로 진행할 수 있습니다. 이것은 현재 항목 만 인식하면되므로 무한한 수의 요소를 반환하는 반복기를 가질 수 있음을 의미 할 수 있습니다.

반복에서 다음 값을 반환하고 다음 항목을 가리 키도록 상태를 업데이트하는 __next__ 메서드가 있습니다. 반복자는 우리가 실행할 때 항상 스트림에서 다음 항목을 가져옵니다.다음 (반복자)

반환 할 다음 항목이 없으면 반복기가 StopIteration 예외를 발생시킵니다.

결과적으로 반복자를 사용하여 린 애플리케이션을 구현할 수 있습니다.

목록, 문자열, 파일 행, 사전, 튜플 등과 같은 컬렉션은 모두 이터레이터입니다.

참고 : 반복 가능이란 무엇입니까?

반복 가능반복자를 반환 할 수있는 개체입니다. 그것은__iter__반환하는 메서드반복자.

iterable은 반복 할 수 있고 iter ()를 호출 할 수있는 객체입니다. 그것은__getitem__0부터 시작하는 순차 인덱스를 가져 와서IndexError인덱스가 더 이상 유효하지 않을 때).

~의 사진조슈아 풀러의 위에Unsplash

Itertools 란 무엇입니까?

Itertools는 Python 3 표준 라이브러리의 일부인 Python 모듈입니다. 이를 통해 반복기에서 메모리 및 계산 효율적인 작업을 수행 할 수 있습니다. 그것은APL, Haskell 및 SML의 구성에서 영감을 얻었습니다..

기본적으로 모듈에는 순수 Python에서 간결하고 효율적으로 애플리케이션을 빌드하는 데 도움이되는 빠르고 메모리 효율적인 메서드가 많이 포함되어 있습니다.

Python의 Itertool은 반복기를 생성하기 위해 반복기에서 작동하는 다양한 함수를 제공하는 모듈입니다. 그것은 우리가반복기 대수.

Image for post
~의 사진개비 콘데의 위에Unsplash

가장 중요한 점은 itertools 함수가 반복자를 반환 할 수 있다는 것입니다.

이것은 우리를 기사의 핵심으로 안내합니다. 무한 반복기가 어떻게 작동하는지 이해합시다.

1. 무한 반복자

무한한 균등 간격 값을 반환하는 반복기를 생성하려면 어떻게해야합니까? 또는 반복기에서 요소의 순환을 생성해야한다면 어떻게 될까요? 아니면 반복자의 요소를 반복하고 싶습니까?

itertools 라이브러리는 필요한 모든 기능을 수행하는 데 사용할 수있는 기능 세트를 제공합니다.

이 섹션에 나열된 세 가지 함수는 무한 항목의 스트림이 될 수있는 반복기를 구성하고 반환합니다.

카운트

예를 들어 균등 한 간격의 값의 무한 시퀀스를 생성 할 수 있습니다.

start = 10
stop = 1
my_counter = it.count(start, stop)
for i in my_counter:
# this loop will run for ever
print(i)

이것은 끝없는 항목을 인쇄합니다.

10
11
12
13
14
15

주기

순환 방법을 사용하여 입력에서 요소의 무한 순환을 생성 할 수 있습니다.

메소드의 입력은 목록, 문자열 또는 사전 등과 같은 반복 가능해야합니다.

my_cycle = it.cycle('Python')
for i in my_cycle:
print(i)

이렇게하면 끝이없는 항목이 인쇄됩니다.


와이

h
영형


와이

h
영형

반복

항목 (문자열 또는 컬렉션)을 반복하려면 repeat () 함수를 사용할 수 있습니다.

to_repeat = 'FM'
how_many_times = 4
my_repeater = it.repeat(to_repeat, how_many_times)
for i in my_repeater:
print(i)
#Prints
FM
FM
FM
FM

이것은 문자열‘FM’을 4 번 반복합니다. 두 번째 매개 변수를 제공하지 않으면 문자열을 무한 반복합니다.

Image for post
~의 사진우이의 위에Unsplash

2. 반복기 종료

그러면 주제의 다음 섹션으로 이동합니다.

이 섹션에서는 반복 종료의 강력한 기능을 설명합니다. 이러한 기능은 다음과 같은 여러 가지 이유로 사용할 수 있습니다.

  • 여러 반복 가능 항목이있을 수 있으며 단일 시퀀스에서 모든 반복 가능 항목의 요소에 대해 하나씩 작업을 수행하려고합니다.
  • 또는 iterable의 모든 단일 요소에 대해 수행하려는 여러 함수가있을 때
  • 또는 때로는 술어가 참인 한 iterable에서 요소를 삭제하고 다른 요소에 대해 조치를 수행하려고합니다.

체인

이 메서드를 사용하면 남은 요소가 없을 때까지 시퀀스의 모든 입력 이터 러블에서 요소를 반환하는 이터레이터를 만들 수 있습니다. 따라서 연속 시퀀스를 단일 시퀀스로 처리 할 수 ​​있습니다.

chain = it.chain([1,2,3], ['a','b','c'], ['End'])
for i in chain:
print(i)

다음과 같이 인쇄됩니다.

1
2




종료

동안 드롭

이터 러블을 조건과 함께 전달할 수 있으며이 메서드는 조건이 요소에 대해 False를 반환 할 때까지 각 요소에 대한 조건 평가를 시작합니다. 조건이 요소에 대해 False로 평가 되 자마자이 함수는 이터 러블의 나머지 요소를 반환합니다.

예를 들어 작업 목록이 있고 요소를 반복하고 조건이 충족되지 않는 즉시 요소를 반환하려고한다고 가정합니다. 조건이 False로 평가되면 반복기의 나머지 요소를 반환 할 것으로 예상됩니다.

jobs = ['job1', 'job2', 'job3', 'job10', 'job4', 'job5']
dropwhile = it.dropwhile(lambda x : len(x)==4, jobs)
for i in dropwhile:
print(i)

이 메서드는 다음을 반환합니다.

직업 10
직업 4
직업 5

이 메소드는 job10 요소의 길이가 4자가 아니므로 job10 및 나머지 요소가 리턴되기 때문에 위의 세 항목을 리턴했습니다.

입력 조건과 이터 러블도 복잡한 객체가 될 수 있습니다.

잠시

이 메서드는 dropwhile () 메서드와 반대입니다. 기본적으로 첫 번째 조건이 False를 반환하고 다른 요소를 반환하지 않을 때까지 iterable의 모든 요소를 ​​반환합니다.

예를 들어, 작업 목록이 있고 조건이 충족되지 않는 즉시 작업 반환을 중지하려고한다고 가정합니다.

jobs = ['job1', 'job2', 'job3', 'job10', 'job4', 'job5']
takewhile = it.takewhile(lambda x : len(x)==4, jobs)
for i in takewhile:
print(i)

이 메서드는 다음을 반환합니다.

직업 1
직업 2
job3

이는‘job10’의 길이가 4자가 아니기 때문입니다.

GroupBy

이 함수는 이터 러블의 연속 요소를 그룹화 한 후 이터레이터를 생성합니다. 이 함수는 키, 값 쌍의 반복자를 반환합니다. 여기서 키는 그룹 키이고 값은 키로 그룹화 된 연속 요소의 컬렉션입니다.

다음 코드 스 니펫을 고려하십시오.

iterable = 'FFFAARRHHHAADDMMAAALLIIKKK'
my_groupby = it.groupby(iterable)
for key, group in my_groupby:
print('Key:', key)
print('Group:', list(group))

그룹 속성은 반복 가능하므로 목록으로 구체화했습니다.

결과적으로 다음과 같이 인쇄됩니다.

키 : F
그룹 : [‘F’,‘F’,‘F’]
키 : A
그룹 : [‘A’,‘A’]
키 : R
그룹 : [‘R’,‘R’]
키 : H
그룹 : [‘H’,‘H’,‘H’]
키 : A
그룹 : [‘A’,‘A’]
키 : D
그룹 : [‘D’,‘D’]
키 : M
그룹 : [‘M’,‘M’]
키 : A
그룹 : [‘A’,‘A’,‘A’]
키 : L
그룹 : [‘L’,‘L’]
키 : I
그룹 : [‘I’,‘I’]
키 : K
그룹 : [‘K’,‘K’,‘K’]

복잡한 논리로 그룹화하려는 경우 키 함수를 두 번째 인수로 전달할 수도 있습니다.

이 메소드는 이터 러블을 분할하고 입력에서 새 이터 러블을 생성 할 수 있습니다. 출력은 주어진 항목 수에 대한 반복 가능 항목을 반환하는 반복기이기도합니다. 더 잘 이해하려면 아래 스 니펫을 검토하세요.

iterable = 'FM'
tee = it.tee(iterable, 5)
for i in tee:
print(list(i))

이 메서드는 전체 반복 가능한 FM을 5 번 반환했습니다.

[‘F’,‘M’]
[‘F’,‘M’]
[‘F’,‘M’]
[‘F’,‘M’]
[‘F’,‘M’]

Image for post
~의 사진개비 콘데의 위에Unsplash

3. 조합 반복자

기사의이 섹션에서는 모든 Python 프로그래머에게 확실한 이해를 위해 권장하는 두 가지 방법을 설명합니다.

순열

입력에서 요소의 연속적인 순열을 반환하는 반복기를 만들 수 있습니다.순열 방법을 사용하여 반복 가능.

순열의 길이를 지정하기 위해 인수를 전달할 수 있습니다. iterable의 길이가 기본값입니다.

이것은 길이가 누락되면 메서드가 가능한 모든 전체 길이 순열을 생성한다는 것을 의미합니다.

iterable = 'FM1'length = 2
permutations = it.permutations(iterable, length)
for i in permutations:
print(i)

다음과 같이 인쇄됩니다.

(‘F’,‘M’,‘1’)
(‘F’,‘1’,‘M’)
(‘M’,‘F’,‘1’)
(‘M’,‘1’,‘F’)
(‘1’,‘F’,‘M’)
(‘1’,‘M’,‘F’)

길이가 2이면 다음을 생성합니다.

(‘F’,‘M’)
(‘F’,‘1’)
(‘M’,‘F’)
(‘M’,‘1’)
(‘1’,‘F’)
(‘1’,‘M’)
(‘F’,‘M’)
(‘F’,‘1’)
(‘M’,‘1’)

조합

마지막으로 iterable 조합을 생성하는 방법에 대한 설명을 제공하고 싶었습니다.

이터 러블이 주어지면 요소의 하위 시퀀스를 반환하는 이터레이터를 구성 할 수 있습니다.주어진 길이의.

요소는 위치에 따라 고유 한 것으로 처리되며 고유 한 요소 만 반환됩니다.

iterable = 'FM1'
combinations = it.combinations(iterable, 2)
for i in combinations:
print(i)

다음과 같이 인쇄됩니다.

(‘F’,‘M’)
(‘F’,‘1’)
(‘M’,‘1’)

Image for post
~의 사진Ilze Lucero의 위에Unsplash

요약

이 기사에서는 Itertools 라이브러리의 사용에 대해 설명했습니다. 특히 다음과 같이 설명했습니다.

  1. 무한 반복자
  2. 반복기 종료
  3. 조합 반복자

itertools 메소드를 조합하여 애플리케이션에서 강력한 기능 세트를 제공 할 수 있습니다. Itertools 라이브러리를 사용하여 더 짧은 시간에 정확하고 메모리 효율적이며 안정적인 애플리케이션을 구현할 수 있습니다.

Itertools 라이브러리를 사용할 수 있는지 평가하기 위해 잠재적으로 애플리케이션을 평가하는 것이 좋습니다.

자세한 내용은 Python 공식 문서를 참조하십시오.여기

데이터 과학,데이터 시각화

Pandas 및 Plotly를 사용한 데이터 시각화

Image for post
출처 — Dribbble

고객이 회사에 투자하도록 설득하려고한다고 상상해보십시오. 모든 직원의 기록과 성과를 막대 차트 나 원형 차트가 아닌 엑셀 시트 형식으로 표시합니다. 고객의 입장에서 자신을 상상해보십시오. 그러면 어떻게 반응할까요? (너무 많은 데이터가 그렇게 압도적이지 않을까요?). 여기에서 데이터 시각화가 등장합니다.

데이터 시각화는 원시 데이터를 시각적 플롯과 그래프로 변환하여 인간의 두뇌가 더 쉽게 해석 할 수 있도록하는 방법입니다. 주요 목표는 연구 및 데이터 분석을 더 빠르게 수행하고 추세, 패턴을 효과적으로 전달하는 것입니다.

인간의 두뇌는 긴 일반 텍스트보다 시각적으로 매력적인 데이터를 더 잘 이해하도록 프로그래밍되어 있습니다.

이 기사에서는 데이터 세트를 가져 와서 요구 사항에 따라 데이터를 정리하고 데이터 시각화를 시도해 보겠습니다. 데이터 세트는 Kaggle에서 가져옵니다. 찾을 수 있습니다여기.

먼저 외부 소스에서 데이터를로드하고 정리하기 위해 Pandas 라이브러리를 사용합니다. 이전 기사에서 팬더에 대해 더 많이 공부할 수 있습니다.여기.

사용하려면 Pandas 라이브러리를 가져와야합니다. 그것을 사용하여 가져올 수 있습니다.

import pandas as pd

Kaggle에서 가져온 CSV 파일을로드하고 이에 대해 자세히 알아 보겠습니다.

데이터 세트에 총 9 개의 열이 있음을 이해할 수 있습니다. 날짜 및 시간 열은 마지막으로 업데이트 된 날짜 및 시간을 나타냅니다. ConfirmedIndianNational 및 ConfirmedForeignNational 열은 사용하지 않습니다. 따라서이 두 개의 열을 삭제하겠습니다. 시간 열도 중요하지 않습니다. 우리도 그것을 떨어 뜨리 자. 데이터 프레임에 이미 인덱스가 있으므로 Serial No (Sno) 열도 필요하지 않습니다.

Image for post

바로 데이터 프레임에 5 개의 열만 있음을 알 수 있습니다. 중복 데이터를 유지하면 불필요한 공간을 차지하고 잠재적으로 런타임이 저하 될 수 있으므로 중복 데이터를 삭제하는 것이 좋습니다.

여기에서 Kaggle 데이터 세트는 매일 업데이트됩니다. 기존 데이터를 덮어 쓰는 대신 새 데이터가 추가됩니다. 예를 들어 4 월 13 일 데이터 세트에는 특정주의 누적 데이터를 나타내는 각 행이있는 925 개의 행이 있습니다. 그러나 4 월 14 일에 데이터 세트에 958 개의 행이 있었으며 이는 34 개의 새 행 (데이터 세트에 총 34 개의 상태가 있으므로)이 4 월 14 일에 추가되었음을 의미합니다.

Image for post

위의 그림에서 동일한 State 이름을 볼 수 있지만 다른 열의 변경 사항을 관찰하십시오. 새로운 사례에 대한 데이터는 매일 데이터 세트에 추가됩니다. 이러한 형태의 데이터는 스프레드 추세를 파악하는 데 유용 할 수 있습니다. 처럼-

  1. 시간 경과에 따른 케이스 수의 증가입니다.
  2. 시계열 분석 수행

그러나 우리는 이전 데이터를 제외하고 최신 데이터 만 분석하는 데 관심이 있습니다. 따라서 필요하지 않은 행을 삭제하겠습니다.

먼저 데이터를 날짜별로 내림차순으로 정렬하겠습니다. 상태 이름을 사용하여 데이터를 그룹화하여 중복 값을 제거하십시오.

Image for post

df_states 데이터 프레임에 30 개의 행만 있다는 것을 알 수 있습니다. 이는 각 상태에 대한 최신 통계를 보여주는 고유 한 행이 있음을 의미합니다. 날짜 열을 사용하여 데이터 프레임을 정렬 할 때 데이터 프레임을 날짜별로 내림차순으로 정렬하고 (코드에서 ascending = False 확인) remove_duplicates는 값의 첫 번째 항목을 저장하고 모든 중복 항목을 제거합니다.

Image for post

이제 데이터 시각화에 대해 이야기하겠습니다. Plotly를 사용하여 위의 데이터 프레임을 시각화합니다.

히스토그램, 막대 그래프, 산점도는 패턴과 추세를 효율적으로 설명하지만 지리 데이터를 다루기 때문에 등치 맵을 선호합니다.

등치 맵은 무엇입니까?

Plotly에 따르면 Choropleth 맵은 데이터 변수와 관련하여 색상이 지정되거나 음영 처리 된 분할 된 지리적 영역을 나타냅니다. 이러한지도는 지리적 영역에 대한 가치를 빠르고 쉽게 표시 할 수있는 방법을 제공하며 트렌드와 패턴도 공개합니다.

Image for post
출처 — Youtube

위 이미지에서 영역은 인구 밀도에 따라 색상이 지정됩니다. 색이 어두울수록 특정 지역의 인구가 더 많다는 것을 의미합니다. 이제 데이터 세트와 관련하여 확인 된 사례를 기반으로 등치 맵을 생성 할 것입니다. 확진 자 수가 많을수록 특정 부위의 색이 어두워집니다.

인도지도를 렌더링하려면 상태 좌표가있는 shapefile이 필요합니다. 인도 용 shapefile을 다운로드 할 수 있습니다.여기.

Wikipedia에 따르면shapefile형식은 지리 정보 시스템 (GIS)을위한 지리 공간 벡터 데이터 형식입니다.

shapefile로 작업하기 전에 GeoPandas를 설치해야합니다. GeoPandas는 지리 공간 데이터 작업을 쉽게 만들어주는 Python 패키지입니다.

pip install geopandas
import geopandas as gpd
Image for post

데이터 프레임에 상태 이름과 벡터 형식의 좌표가 있음을 알 수 있습니다. 이제이 shapefile을 필요한JSON체재.

import json#Read data to json.merged_json = json.loads(map_df.to_json())

다음으로 Plotly Express를 사용하여 등치 맵을 만들 것입니다. 'px.choropleth함수. 등치 맵을 만들려면 기하학적 정보가 필요합니다.

  1. 이것은 GeoJSON 형식 (위에서 생성 한)으로 제공 될 수 있으며 각 기능에는 고유 한 식별 값이 있습니다 (예 : st_nm)

2. 미국 주 및 세계 국가를 포함하는 Plotly 내의 기존 도형

GeoJSON 데이터, 즉 (위에서 만든 merged_json)은Geojson인수 및 측정 메트릭이색깔인수px.choropleth.

모든 등치 맵에는위치주 / 국가를 매개 변수로 사용하는 인수입니다. 인도의 여러 주에 대한 등치 맵을 만들고 있으므로 State 열을 인수에 전달합니다.

fig = px.choropleth(df_states, 
geojson=merged_json,
color="Confirmed",
locations="State/UnionTerritory",
featureidkey="properties.st_nm",
color_continuous_scale = ["#ffffb2","#fecc5c","#fd8d3c","#f03b20","#bd0026"],
projection="mercator"
)
fig.update_geos(fitbounds="locations", visible=False)fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})fig.show()

첫 번째 매개 변수는 데이터 프레임 자체이며 확인 된 값에 따라 색상이 달라집니다. 우리는명백한인수fig.updtae_geos ()기본지도와 프레임을 숨기려면 False로 설정합니다. 우리는 또한 설정fitbounds = "위치"세계지도를 자동으로 확대하여 관심 영역을 표시합니다.

Image for post
주를 마우스로 가리키면 더 자세히 알 수 있습니다.

Github에서 전체 코드를 볼 수 있습니다.여기.

데이터 시각화는 매우 과소 평가 된 기술입니다. 데이터를 실시간으로 시각화 할 때 도움이 될 몇 가지 개념을 취했으면합니다. 여러분의 피드백과 응답을 자유롭게 공유하십시오. 오늘 새로운 것을 배웠다면 손을 들어보세요.

+ Recent posts