強(qiáng)烈推薦好用的python庫(kù)合集(全面總結(jié))
更新時(shí)間:2023年05月14日 09:08:56 作者:tiny極客
這篇文章主要為大家介紹了強(qiáng)烈推薦非常好用的python庫(kù)合集(全面總結(jié)),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
分詞 - jieba
- 優(yōu)秀的中文分詞庫(kù),依靠中文詞庫(kù),利用詞庫(kù)確定漢子之間關(guān)聯(lián)的概率,形成分詞結(jié)果
import jieba word = '偉大的中華人民共和國(guó)' jieba.cut(word) jieba.lcut(word)
?? 詞云庫(kù) - wordcloud
- 對(duì)數(shù)據(jù)中出現(xiàn)頻率較高的
關(guān)鍵詞生成的一幅圖像,予以視覺(jué)上的突出
import jieba
import numpy as np
import PIL.Image as Image
from wordcloud import WordCloud
def run(word_path, picture_path):
with open(word_path, 'r') as f:
word = f.read()
cut_word = ' '.join(jieba.cut(word))
color_mask = np.array(Image.open(picture_path))
word_cloud = WordCloud(
# 設(shè)置字體,不指定就會(huì)出現(xiàn)亂碼
font_path='/System/Library/Fonts/PingFang.ttc',
# 設(shè)置背景色
background_color='white',
# 詞云形狀
mask=color_mask,
# 允許最大詞匯
max_words=120,
# 最大號(hào)字體
max_font_size=2000
).generate(cut_word)
word_cloud.to_file('word_cloud.jpg')
im = word_cloud.to_image()
im.show()?? 可視化進(jìn)度條 - tpdm
- 好看的進(jìn)度條,不僅會(huì)讓人一眼就知道任務(wù)的進(jìn)度,還能夠讓自己的心情愉悅
from time import sleep from tqdm import tqdm # 這里同樣的,tqdm就是這個(gè)進(jìn)度條最常用的一個(gè)方法 # 里面存一個(gè)可迭代對(duì)象 for i in tqdm(range(1, 500)): # 模擬你的任務(wù) sleep(0.01) sleep(0.5)
?? 優(yōu)美的表格 - PrettyTable
- 可以讓你在命令行打印出優(yōu)美的表格
import prettytable as pt # 按行添加數(shù)據(jù) tb = pt.PrettyTable() tb.field_names = ['name', 'age', 'height', 'weight'] tb.add_row(['飛兔', 25, 174, 65]) tb.add_row(['autofelix', 23, 164, 55]) tb.add_row(['極客飛兔', 27, 184, 69.5]) print(tb) # +-----------+-----+--------+--------+ # | name | age | height | weight | # +-----------+-----+--------+--------+ # | 飛兔 | 25 | 174 | 65 | # | autofelix | 23 | 164 | 55 | # | 極客飛兔 | 27 | 184 | 69.5 | # +-----------+-----+--------+--------+
?? 多進(jìn)程 - multiprocessing
- 創(chuàng)建多進(jìn)程
from multiprocessing import Process
def func(s):
print(s)
if __name__ == '__main__':
process = [
Process(target=func, args=('1', ))
Process(target=func, args=('2', ))
]
[p.start() for p in process]
[p.join() for p in process]?? 多線程 - threading
- 創(chuàng)建多線程
import threading
def func(s):
print(s)
if __name__ == '__main__':
thread = [
threading.Thread(target=func, args=('1', ))
threading.Thread(target=func, args=('2', ))
]
[t.start() for t in thread]
[t.join() for t in thread]?? 谷歌翻譯 - googletrans
- 自動(dòng)語(yǔ)言檢測(cè),批量翻譯,語(yǔ)言檢測(cè)等
from googletrans import Translator
translator = Translator()
# 未提供源語(yǔ)言以及翻譯的最終語(yǔ)言,會(huì)自動(dòng)翻譯成英文
translator.translate('?????.')
# 告訴它翻譯成什么語(yǔ)言
translator.translate('?????.', dest='ja')
# 告訴它源語(yǔ)言是什么
translator.translate('極客飛兔', src='zh-cn')
# 語(yǔ)言檢測(cè)
t = ttranslator.detect('? ??? ??? ??????.')
t.lang?? 重復(fù)回調(diào) - retrying
- 如果請(qǐng)求失敗,我們需要再重新進(jìn)行進(jìn)行請(qǐng)求,防止請(qǐng)求異常導(dǎo)致數(shù)據(jù)缺失
from retrying import retry
@retry(stop_max_attempt_number=5)
def say():
try:
autofelix
except Exception as e:
# 可以將錯(cuò)誤記錄日志
print(e)
raise
say()?? 游戲開(kāi)發(fā) - pygame
- 實(shí)現(xiàn) python 游戲的開(kāi)發(fā),可以開(kāi)發(fā)各種大小型游戲
import pygame, sys
from pygame.locals import *
# 初始化pygame
pygame.init()
# 設(shè)置窗口的大小,單位為像素
screen = pygame.display.set_mode((500,400), 0, 32)
# 設(shè)置窗口的標(biāo)題
pygame.display.set_caption('用戶事件監(jiān)控')
# 設(shè)置背景
screen.fill((255, 255, 255))
# 程序主循環(huán)
while True:
# 獲取事件
for event in pygame.event.get():
# 判斷事件是否為退出事件
if event.type == QUIT:
# 退出pygame
pygame.quit()
# 退出系統(tǒng)
sys.exit()
# 獲得鍵盤按下的事件
if event.type == KEYDOWN:
if(event.key==K_UP or event.key==K_w):
print("上")
if(event.key==K_DOWN or event.key==K_s):
print("下")
if(event.key==K_LEFT or event.key==K_a):
print("左")
if(event.key==K_RIGHT or event.key==K_d):
print("右")
# 按下鍵盤的Esc鍵退出
if(event.key==K_ESCAPE):
# 退出pygame
pygame.quit()
# 退出系統(tǒng)
sys.exit()
# 獲得鼠標(biāo)當(dāng)前的位置
if event.type ==MOUSEMOTION:
print(event.pos)
# 獲得鼠標(biāo)按下的位置
if event.type ==MOUSEBUTTONDOWN:
print("鼠標(biāo)按下:", event.pos)
# 獲得鼠標(biāo)抬起的位置
if event.type ==MOUSEBUTTONUP:
print("鼠標(biāo)抬起:", event.pos)
# 繪制屏幕內(nèi)容
pygame.display.update()?? 繪圖教程 - turtle
- 可以畫出各種各樣奇妙的圖案,簡(jiǎn)直就是程序中的畫板
from turtle import *
colors = ['red', 'purple', 'blue', 'green', 'yellow', 'orange']
for x in range(360):
pencolor(colors[x % 6])
width(x / 100 + 1)
forward(x)
left(59)?? 數(shù)據(jù)分析 - pandas
- 數(shù)據(jù)分析處理庫(kù),為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的,能夠快速便捷地處理數(shù)據(jù)的函數(shù)和方法
import pandas as pd
info = pd.read_csv("students.csv", encoding = "utf-8")
# 查看數(shù)據(jù)框的一些屬性:最大、最小、均值、四分位數(shù)等
info.describe()
# 空值相關(guān)的操作
pin = info["pin"]
pin_isnull = pd.isnull(pin)
pin_isnull_list = info[pin_isnull]
len(pin_isnull_list)
# 缺失值相關(guān)操作, 簡(jiǎn)單的處理辦法就是過(guò)濾掉null值
books = info["life_cycle_books"]
book_isnull = pd.isnull(books)
book_list_isnull = info["life_cycle_books"][book_isnull == False]
mean = sum(book_list_isnull) / len(book_list_isnull)
# 刪除缺失值, 所有行
na_info = info.dropna(axis = 1)
# 刪除缺失值, 可以指定列
na_info = info.dropna(axis = 0, subset = ["age", "name"])?? 算法加密 - pycryto
- pycryto 能實(shí)現(xiàn)大致 3 種類型的數(shù)據(jù)加密(單向加密、對(duì)稱加密 和非對(duì)稱加密),產(chǎn)生隨機(jī)數(shù),生成密鑰對(duì),數(shù)字簽名
from Crypto.Hash import SHA256
hash = SHA256.new()
hash.update('Hello, World!')
# 使用digest()方法加密
digest = hash.digest()
# 使用hexdigest()方法加密,該方法加密后是16進(jìn)制的
hexdigest = hash.hexdigest()
print(digest, hexdigest)?? 操作 win 電腦 - pywin32
- pywin32 包裝了 Windows 系統(tǒng)的 Win32 API,能創(chuàng)建和使用 COM 對(duì)象和圖形窗口界面
import win32api import win32con hid = win32gui.WindowFromPoint((100, 100)) # 獲取窗口標(biāo)題 title = win32gui.GetWindowText(hid) # 獲取窗口類名 class_name = win32gui.GetClassName(hid) # 模擬鼠標(biāo)在(400, 500)位置進(jìn)行點(diǎn)擊操作 point = (400, 500) win32api.SetCursorPos(point) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)
?? 自動(dòng)程序測(cè)試 - Selenium
- Selenium 是一個(gè)用于 Web 應(yīng)用程序測(cè)試的工具。Selenium 測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 初始化谷歌瀏覽器
driver = webdriver.Chrome()
# 最大化窗口
driver.maximize_window()
# 打開(kāi)頭條登陸網(wǎng)址
driver.get('https://sso.toutiao.com')
# 等待某個(gè)元素是否出現(xiàn)
WebDriverWait(self.driver, 10).until(
EC.text_to_be_present_in_element((By.XPATH, '//*[@id="mobile-code-get"]/span'), u'發(fā)送')
)
# 實(shí)例化鼠標(biāo)操作
action = ActionChains(self.driver)
# 按住滑塊
action.click_and_hold(self.driver.find_element_by_xpath('//*[@id="captcha_container"]')).perform()
# 將滑塊移動(dòng)x的距離
action.move_by_offset(xoffset=x, yoffset=0).perform()
# 釋放滑塊
action.release().perform()?? 音頻播放 - mp3play
- 一款超級(jí)小型的音頻操作庫(kù),可以實(shí)現(xiàn)播放音樂(lè),按空格鍵實(shí)現(xiàn)暫停和播放的切換
import mp3play
clip = mp3play.load('music.mp3')
clip.play()?? 網(wǎng)頁(yè)解析 - BeautifulSoup
- 是一個(gè)網(wǎng)頁(yè)解析庫(kù),能夠快速的分析網(wǎng)頁(yè)結(jié)構(gòu)
from bs4 import BeautifulSoup
soup = BeautifulSoup('<p class="name nickname user"><b>i am autofelix</b></p>', 'html.parser')
#獲取整個(gè)p標(biāo)簽的html代碼
print(soup.p)
#獲取b標(biāo)簽
print(soup.p.b)
#獲取p標(biāo)簽內(nèi)容,使用NavigableString類中的string、text、get_text()
print(soup.p.text)
#返回一個(gè)字典,里面是多有屬性和值
print(soup.p.attrs)
#查看返回的數(shù)據(jù)類型
print(type(soup.p))
#根據(jù)屬性,獲取標(biāo)簽的屬性值,返回值為列表
print(soup.p['class'])
#給class屬性賦值,此時(shí)屬性值由列表轉(zhuǎn)換為字符串
soup.p['class']=['Web','Site']
print(soup.p)?? 日志處理 - logging
- 打印和記錄日志
import logging
logging.basicConfig(filename='logging.text', level=logging.DEBUG)
logging.debug('It is a debug')
logging.info('It is a info')
logging.warning('It is a warning')?? 圖像處理 - PIL
- 非常適合于圖像歸檔以及圖像的批處理任務(wù)??梢允褂?PIL 創(chuàng)建縮略圖,轉(zhuǎn)換圖像格式,打印圖像等等
from PIL import Image
im = Image.open("picture.jpg")
new_im = im.convert('L')
print(new_im.mode)
new_im.show()?? 發(fā)送郵件 - yagmail
- 是一種非常簡(jiǎn)單用來(lái)實(shí)現(xiàn)自動(dòng)發(fā)郵件功能的包,可以實(shí)現(xiàn)給單人或者多人同時(shí)發(fā)送郵件
import yagmail # 鏈接郵箱服務(wù)器 yag = yagmail.SMTP( user='郵箱地址', password='登錄密碼', host='smtp.163.com') # 郵箱正文 contents = ['郵件第一行內(nèi)容', '郵件第二行內(nèi)容', '郵件第三行內(nèi)容'] # 給用戶發(fā)送郵件并添加多個(gè)附件 yag.send(['目標(biāo)郵箱地址1', '目標(biāo)郵箱地址2', '目標(biāo)郵箱地址3'], '郵件標(biāo)題', contents, ['c://附件.pdf', 'c://picture.jpg'])
?? 源碼打包 - pyinstaller
- 將源碼打包成exe文件,直接在window上運(yùn)行
pyinstaller -F -w -p ./lib -i logo.ico main.py
相關(guān)文章
python中random.randint和random.randrange的區(qū)別詳解
這篇文章主要介紹了python中random.randint和random.randrange的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
教你用一行Python代碼實(shí)現(xiàn)GUI圖形界面
這篇文章主要介紹了教你用一行Python代碼實(shí)現(xiàn)GUI圖形界面,通過(guò)使用PySimpleGUI的popup_get_folder()方法,一行代碼就能實(shí)現(xiàn)選擇文件夾的操作,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
Pygame淺析動(dòng)畫精靈和碰撞檢測(cè)實(shí)現(xiàn)方法
這篇文章主要介紹了利用pygame完成動(dòng)畫精靈和碰撞檢測(cè),代碼詳細(xì),內(nèi)容豐富,對(duì)于想要學(xué)習(xí)pygame的朋友來(lái)講是一個(gè)不錯(cuò)的練習(xí),需要的朋友可以參考下2023-01-01
python--shutil移動(dòng)文件到另一個(gè)路徑的操作
這篇文章主要介紹了python--shutil移動(dòng)文件到另一個(gè)路徑的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Python OpenCV 使用滑動(dòng)條來(lái)調(diào)整函數(shù)參數(shù)的方法
這篇文章主要介紹了Python OpenCV 使用滑動(dòng)條來(lái)調(diào)整函數(shù)參數(shù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
pandas 將list切分后存入DataFrame中的實(shí)例
今天小編就為大家分享一篇pandas 將list切分后存入DataFrame中的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5多線程中信號(hào)與槽的詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5多線程中信號(hào)與槽的詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03
Python將DataFrame的某一列作為index的方法
下面小編就為大家分享一篇Python將DataFrame的某一列作為index的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04

