7 つの素晴らしい Python ライブラリ (強く推奨)

私は過去 2 年間、Python を広範囲に使用してきました。その過程で、データ エンジニアリングやビジネス インテリジェンス プロジェクトの効率を大幅に向上させ、パフォーマンスを向上させる素晴らしいライブラリを発見しました。

振り子

Python には datetime に利用できるライブラリが多数ありますが、日付を操作する場合は Pendulum が使いやすいと思います。

Pendulum は、組み込みの Python datetime モジュールを拡張し、タイム ゾーンを処理し、日付と時刻の操作を実行するためのより直感的な API を追加します。

例には、時間間隔の追加、日付の減算、タイムゾーン間の変換などが含まれます。日付と時刻をフォーマットするためのシンプルで使いやすい API を提供します。

1. インストール

pip install pendulum  

2. タイムゾーンとタイムゾーン変換をインスタンス化します。

# 导入库  
# import library  
  
import pendulum  
dt = pendulum.datetime(2023, 6, 8)  
print(dt)  

出力:

2023-06-08T00:00:00+00:00  

2.2 local() はローカルタイムゾーンを使用します

#local() 使用本地时区  
  
local = pendulum.local(2023, 6, 8)  
print("本地时间:", local)  
print("本地时区:", local.timezone.name)  

出力:

本地时间:2023-06-08T00:00:00+08:00  
本地时区:Asia/Shanghai  

2.3 日付と時刻のインスタンスを作成する

# Printing UTC time  
utc = pendulum.now('UTC')  
print("Current UTC time:", utc)  

出力:

Current UTC time: 2023-06-08T10:44:51.856673+00:00  

2.4 UTC タイムゾーンをヨーロッパ/パリ時間に変換する

# 将UTC 时区转换为欧洲/巴黎时间  
europe = utc.in_timezone('Europe/Paris')  
print("巴黎当前时间:", europe)  

出力:

Current UTC time: 2023-06-08T10:47:27.836789+00:00  
Current time in Paris: 2023-06-08T12:47:27.836789+02:00

FTFY

データ内に存在する外国語が正しく表示されない状況に遭遇したことはありますか?

これは次のように呼ばれます:Mojibakeエンコードまたはデコードの問題が原因で発生する文字化けまたは文字化けしたテキストを説明するために使用される用語。

これは通常、ある文字エンコーディングを使用して書かれたテキストが、別のエンコーディングを使用して誤ってデコードされた場合に発生します。

ftfy Python ライブラリは Mojibake の修正に役立ち、NLP のユースケースで非常に役立ちます。

インストール

pip install ftfy  

print(ftfy.fix_text('Correct the sentence using “ftfyâ€\x9d.'))  
print(ftfy.fix_text('✔ No problems with text'))  
print(ftfy.fix_text('à perturber la réflexion'))  

出力

Mojibake に加えて、ftfy は不正なエンコーディング、不正な行末、不正な引用符を修正します。次のいずれかのエンコーディングでデコードされたテキストを理解できます。

拉丁语-1 (ISO-88591)  
Windows-1252 (cp1252 — 用于微软产品)  
Windows-1251 (cp1251 — cp1252的俄语版本)  
Windows-1250 (cp1250 — cp1252的东欧版本)  
ISO-88592(与Windows-1250不完全相同)  
MacRoman(在 Mac OS 9 及更早版本上使用)  
cp437(用于 MS-DOS 和某些版本的 Windows 命令提示符)  

スケッチ

Sketch は、Python の pandas ライブラリを使用するユーザー向けに設計された、独自の AI コード作成アシスタントです。

機械学習アルゴリズムを活用してユーザーデータのコンテキストを理解し、関連するコードの提案を提供して、データ操作と分析タスクをより簡単かつ効率的にします。

Sketch では、ユーザーが IDE に追加のプラグインをインストールする必要がないため、すぐに簡単に開始できます。

これにより、データ関連のタスクに必要な時間と労力が大幅に削減され、ユーザーはより適切で効率的なコードを作成できるようになります。

インストール

pip install sketch  

たとえば、このライブラリを使用するには、Pandas データ フレームに .sketch 拡張子を追加する必要があります。

.sketch.ask

ask は、ユーザーが自然言語形式でデータについて質問できるようにする Sketch の機能です。ユーザーのクエリに対してテキストベースの応答を提供します。

# Importing libraries  
import sketch  
import pandas as pd  
file = "D://7 Datasciense//DS_visilization//altair//airports.csv"  
# Reading the data (using twitter data as an example)  
df = pd.read_csv(file)  
print(df)  

米国の空港の概要をエクスポートします。

# 问表单有哪些项目  
df.sketch.ask("Which columns are category type?")  

iata、名前、都市、州、国

次のコマンド出力にマージするスクリーンショット

# 描述表单的形状行和列的大小  
df.sketch.ask("What is the shape of the dataframe")  

データフレームの形状は (3376, 8) です。

上記 2 つのコマンドの結果は次のとおりです。

.スケッチ.ハウツー

HowTo は、さまざまなデータ関連タスクの開始点または結論として使用できるコード ブロックを提供する機能です。

コード スニペットにデータの正規化、新しい特徴の作成、データのプロット、さらにはモデルの構築を依頼することができます。

これにより時間が節約され、コードのコピー アンド ペーストが簡単になります。

最初から手動でコーディングする必要はありません。

# 请用一段代码实现可视化  
df.sketch.howto("Visualize the emotions")  

出力

.スケッチ.適用

.apply 関数は、新しい機能の生成、フィールドの解析、その他のデータ操作の実行に役立ちます。

この機能を使用するには、 OpenAIアカウントを取得し、API キーを使用してタスクを実行する必要があります。この機能はまだ試していません。

私はこのライブラリを使うのが大好きで、特にその方法がとても便利だと感じています。

pgeocode ジオコーディング

_"pgeocode"_ は最近見つけた優れたライブラリで、空間分析プロジェクトに非常に役に立ちました。

たとえば、2 つの郵便番号間の距離を調べたり、国と郵便番号を入力することで地理情報を提供したりできます。

https://pgeocode.readthedocs.io/en/latest/

https://pypi.org/project/pgeocode/

上記のページには、世界中の郵便番号をダウンロードするためのリンクがあります。

http://download.geonames.org/export/zip/

データは「現状のまま」提供され、正確性、適時性、完全性についていかなる保証も表明もありません。この Readme ファイルでは、GeoNames 郵便番号データセットについて説明します。

メインの GeoNames データ抽出はここにあります: http://download.geonames.org/export/dump/

サポートされている国/地域:

現在100近くの国・地域に対応しています。全国の郵便サービスが互換性のあるライセンスを使用してデータを公開し始めると、新しい国が追加されます。

多くの国では、緯度/経度は、主要な地名データベースで郵便番号の地名を検索することによって決定され、行政区画と郵便番号の数値的近さが地名の曖昧さを解消する要素となります。

対応する地理名がメインの地理名データベースで見つからない郵便番号と地名については、隣接する郵便番号の平均緯度/経度を計算します。

一部の中国国の略語のコーディング

地名数据库中提供的国家名单  
以及相应的国家代码如下:  
  
安道尔(AD)、阿根廷(AR)、美属萨摩亚(AS)、  
奥地利(AT)、澳大利亚(AU)、奥兰群岛(AX)、  
孟加拉国(BD)、比利时(BE)、保加利亚(BG)、  
百慕大(BM)、巴西(BR)、白俄罗斯(BY)、  
加拿大(加拿大)、瑞士(瑞士)、哥伦比亚(CO)、  
哥斯达黎加(CR)、捷克(CZ)、德国(DE)、  
丹麦(DK)、多米尼加共和国(DO)、  
阿尔及利亚(DZ)、西班牙(西班牙)、芬兰(FI)、  
法罗群岛(FO)、法国(fr)、  
  
墨西哥(MX)、荷兰(荷兰)、挪威(NO)、  
新西兰(新西兰)、  
菲律宾(菲律宾)、巴基斯坦(PK)、波兰(PL)、  
波多黎各(PR)、葡萄牙(PT)、留尼汪岛(RE)、  
罗马尼亚(RO)、俄罗斯联邦(俄罗斯)、瑞典(SE)、  
斯洛文尼亚(SI)、斯洛伐克(SK), 圣马力诺(SM)、  
泰国(TH)、土耳其(TR)、乌克兰(UA)、  
美利坚合众国(美国)、乌拉圭(UY)、罗马教廷(VA)、  
美属维尔京群岛(VI)、马约特岛(YT)、南非(ZA)  

完全な英語の国略語コード

Andorra (AD), Argentina (AR), American Samoa (AS), Austria (AT), Australia (AU), Åland Islands (AX),   
  
Bangladesh (BD), Belgium (BE), Bulgaria (BG), Bermuda (BM), Brazil (BR), Belarus (BY),   
  
Canada (CA), Switzerland (CH), Colombia (CO), Costa Rica (CR), Czechia (CZ),   
  
Germany (DE), Denmark (DK), Dominican Republic (DO), Algeria (DZ),   
  
Spain (ES),   
  
Finland (FI), Faroe Islands (FO), France (FR),   
  
United Kingdom of Great Britain and Northern Ireland (GB), French Guiana (GF), Guernsey (GG), Greenland (GL), Guadeloupe (GP), Guatemala (GT), Guam (GU),   
  
Croatia (HR), Hungary (HU),   
  
Ireland (IE), Isle of Man (IM), India (IN), Iceland (IS), Italy (IT),   
  
Jersey (JE), Japan (JP),   
  
Liechtenstein (LI), Sri Lanka (LK), Lithuania (LT), Luxembourg (LU), Latvia (LV),   
  
Monaco (MC), Republic of Moldova (MD), Marshall Islands (MH), The former Yugoslav Republic of Macedonia (MK), Northern Mariana Islands (MP), Martinique (MQ), Malta (MT), Mexico (MX), Malaysia (MY),   
  
New Caledonia (NC), Netherlands (NL), Norway (NO), New Zealand (NZ),   
  
Philippines (PH), Pakistan (PK), Poland (PL), Saint Pierre and Miquelon (PM), Puerto Rico (PR), Portugal (PT),   
  
Réunion (RE), Romania (RO), Russian Federation (RU), Sweden (SE), Slovenia (SI), Svalbard and Jan Mayen Islands (SJ), Slovakia (SK), San Marino (SM),   
  
Thailand (TH), Turkey (TR),   
  
Ukraine (UA), United States of America (US), Uruguay (UY),   
  
Holy See (VA), United States Virgin Islands (VI),   
  
Wallis and Futuna Islands (WF), Mayotte (YT),   
  
South Africa (ZA)  

インストール

pip install pgeocode  

特定の郵便番号の地理情報を取得する例

# Checking for country "India"  
  
nomi = pgeocode.Nominatim('In')  
  
# Getting geo information by passing the postcodes  
  
nomi.query_postal_code(["620018", "620017", "620012"])  

出力

「Pジオコード」

国と郵便番号を入力として取得し、2 つの郵便番号間の距離を計算します。結果はキロメートル単位です。

# 两个邮政编码之间的物理距离  
  
distance = pgeocode.GeoDistance('In')  
distance.query_postal_code("620018", "620012")  

出力

ジオパンダ

いくつかの新しい要件が導き出されます。

a. 中国という国の略称を取得するにはどうすればよいですか?

つづく

b. 郵便番号から経度、緯度、地名を取得するにはどうすればよいですか?

つづく

5

レムグ

rembg も、画像から背景を簡単に削除できる便利なライブラリです。

#Installation  
pip install rembg  

# Importing libraries  
from rembg import remove  
import cv2   
# path of input image (my file: image.jpeg)  
input_path = 'image.jpeg'  
# path for saving output image and saving as a output.jpeg  
output_path = 'output.jpeg'  
# Reading the input image  
input = cv2.imread(input_path)  
# Removing background  
output = remove(input)  
# Saving file   
cv2.imwrite(output_path, output)  

ローカル ディレクトリを入力して、処理する写真を保存します。

バックグラウンド減算の効果を出力します。

人間化

文字通り「人間に優しい」という意味で、数値、日付、時刻にシンプルで読みやすい文字列形式を提供します。

このライブラリの目標は、データを取得して、たとえば秒を「2 分前」などの読みやすい文字列に変換することで、より人間らしくすることです。

ライブラリは、数値をカンマでフォーマットしたり、タイムスタンプを相対時間に変換したりするなど、さまざまな方法でデータをフォーマットできます。

私はデータ エンジニアリング プロジェクトで整数と日付と時刻を扱うことがよくあります。

インストール

pip install humanize  

例 - 整数

# Importing library  
import humanize  
import datetime as dt  
  
# Formatting  numbers with comma  
a =  humanize.intcomma(951009)  
  
# converting numbers into words  
b = humanize.intword(10046328394)  
  
#printing  
print(a)  
print(b)  

出力

951,009

100億

日付と時刻の例

import humanize  
import datetime as dt  
      
a = humanize.naturaldate(dt.date(2012, 6, 5))  
b = humanize.naturalday(dt.date(2012, 6, 5))  
  
print(a)  
print(b)  

出力

2012 年 6 月 5 日

06月05日

7

オープンストリートマップOSMデータ

osmnx は、ローカル コミュニティ スペースに関する情報を取得するのに非常に便利なツールです。

幅広く利用できることに加えて、Python を通じて簡単に利用できます。この記事では、以下に示す OSM データをダウンロードする方法を説明します。写真はベルリンのレストランです。

すべてのレストランを示すベルリンの地図

ベルリン レストランは、さまざまな年、地理的位置、施設の種類にわたってデータを収集することを目的としています。もちろん、オプションを選択するだけでタスクを簡単に簡素化できます。

まず、必要なライブラリをロードしてファイルを設定することから始めましょう。ファイル ディレクトリへのパスのグローバル変数を定義することも好きです。それでは、同じことをしてみましょう。

# 必要的模块  
import os  
from os.path import join  
import osmnx  
import pandas as pd  
  
# 全局路径变量  
main_path = "your_main_path"  
data_path = join(main_path, "data")  

ディレクトリ パスを処理するには、オペレーティング システムが必要です。

osmnx は、OSM か​​らデータを取得するために使用するメイン ライブラリです。ライブラリのインストールに関する問題を回避するには、仮想環境を使用することをお勧めします。

私は通常、Anaconda で仮想環境をセットアップし、conda-forge 経由で osmnx をインストールします。最後に、Pandas は主にデータの操作とエクスポートに使用されます。

2 番目のステップでは、抽出する場所の種類や地理的位置など、対象データに関連するすべてのパラメーターを指定する必要があります。

cities = ["Berlin, Germany", "Hamburg, Germany"]  
places = ["restaurant", "bar"]  

都市 = [「ベルリン、ドイツ」、「ハンブルク、ドイツ」]

location = [「レストラン」、「バー」]

#注: 外部に保存されている都市リストがある場合は、ここでそれを読み取ることもできます。

#これらの都市を自転車で通過するだけです。

私は、以前に定義したさまざまな場所を独自のフォルダーに保存するのが好きです。これは完全にオプションです。次のコードは、フォルダー構造を自動的に設定します。

for p in places:  
    isExist = os.path.exists(join(data_path, p))  
    if not isExist:  
        os.makedirs(join(data_path, p))  

さまざまな年を取得するために、OSM スナップショットが取得される時点であるタイムスタンプを定義します。これは次のように行われます。

# 设置时间戳  
settings = '[out:json][timeout:180][date:"{year}-12-31T00:00:00Z"]'  

タイムスタンプは年末に設定されています。他の日付でも問題ありません。

{year} は、ループ内の年数のプレースホルダーです。

したがって、定義する最後のパラメータは時間範囲です。

years = ["2020", "2021"]  

最後に、収集したデータを保存するためのリストが必要です。

# 用于存储数据  
extracted_data = []  

すべての準備ができたら、すべてのオプションを実行できます。

# 循环年份并在地点获取时间快照:   
  对于城市中的城市: 对于年份:   
# 定义标签标签   
  
for place in places:  
    for city in cities:  
        for year in years:  
            # 定义标签  
            tag = {
    
    "amenity" : place}  
  
             # 设置提取年份  
            osmnx.settings.overpass_settings = settings.format(year = year)  
  
            # 提取标签和年份的数据  
            tagged_data = osmnx.geometries_from_place(city, tags = tag)  
  
            # 添加快照年份  
            tagged_data["snap_year"] = year  
  
             # 导出数据  
            filename = str(place) + "_" + str(year) + "_" + str(city) + ".csv"  
            path = join(data_path, place)  
            tagged_data.to_csv(join(path, filename))  
  
             # 打印以查看代码在打印时  
            extracted_data.append(tagged_data)  
  
            # 追加列表以存储数据  
            print(f"Extraction of {
      
      year} and {
      
      city} for {
      
      tag} completed")  

ここではレストランやバーなどのアメニティを定義していることに注意してください。OSM タグに基づいてカジュアルなどの他のタイプを定義することもできます。Google に問い合わせると、さまざまなタイプについて知ることができます。それでおしまい。要約すると、指定されたパラメータ セットの OSM データを取得します。

これらのライブラリの一部についてはすでにご存知かと思いますが、Sketch、Pendulum、pgeocode、ftfy、 Open Street Map OSM データは私のデータ プロジェクトに不可欠であり、これらに大きく依存しています。

やっと:

[クローラーを学びたい人のために、Python の学習教材をたくさんまとめて CSDN 公式にアップロードしました。必要な友達は以下の QR コードをスキャンして入手してください]

1. 研究概要

ここに画像の説明を挿入します

2. 開発ツール

ここに画像の説明を挿入します

3.Python基礎資料

ここに画像の説明を挿入します

4. 実践データ

ここに画像の説明を挿入します
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/Z987421/article/details/133324919