8个很少用,但却很好用的 Python 库
本文介绍一些我们可能很少听过,但是对于特定问题或者特定任务来说,可能会非常有帮助的 Python 库
为了配合上述 Python 库的使用,我们先从 Kaggle 上下载一个数据 -- Animal Care and Control Adopted Animals
https://www.kaggle.com/jinbonnie/animal-data
import pandas as pd
df = pd.read_csv('animal-data-1.csv')
print('Number of pets:', len(df))
print(df.head(3))
Number of pets: 10290id intakedate intakereason istransfer sheltercode \0 15801 2009-11-28 00:00:00 Moving 0 C091154631 15932 2009-12-08 00:00:00 Moving 0 D091255942 28859 2012-08-10 00:00:00 Abandoned 0 D12082309identichipnumber animalname breedname basecolour speciesname \0 0A115D7358 Jadzia Domestic Short Hair Tortie Cat1 0A11675477 Gonzo German Shepherd Dog/Mix Tan Dog2 0A13253C7B Maggie Shep Mix/Siberian Husky Various Dog... movementdate movementtype istrial returndate returnedreason \0 ... 2017-05-13 00:00:00 Adoption 0.0 NaN Stray1 ... 2017-04-24 00:00:00 Adoption 0.0 NaN Stray2 ... 2017-04-15 00:00:00 Adoption 0.0 NaN Straydeceaseddate deceasedreason diedoffshelter puttosleep isdoa0 NaN Died in care 0 0 01 NaN Died in care 0 0 02 NaN Died in care 0 0 0[3 rows x 23 columns]
下面我们就进入这些 Python 库的介绍
1. Missingno
Missingno 是用于在数据集当中显示缺失值的,这对于我们的数据分析来说是非常有用的。而且还能做成热力图或者条形图,来更加直观的观察缺失值
matrix - 类似于 seaborn 中的缺失值热图,可以最多展示数据集中50列的密度情况,也可以通过右侧的迷你图,来整体观测数据集的缺失情况
bar - 案列显示缺失值情况
heatmap - 展示缺失值之间的相关性,本质上,揭示了变量的存在与否对另一个变量的存在的影响程度。而对于没有缺失值的列或者全完没有值的列,则不会出现在这里
dendrogram - 树状图与热图类似,展示的是列之间缺失的相关性,而与热图不同的地方是通过一组列来揭示相关性
下面我们就来具体看看这些图表
import missingno as msnomsno.matrix(df)
msno.bar(df)
msno.heatmap(df)
msno.dendrogram(df)
对于 missingno 图表,我们还可以自定义一些参数
msno.matrix(df,figsize=(25,7),fontsize=30,sort='descending',color=(0.494, 0.184, 0.556),width_ratios=(10, 1))
最后我们还可以与 matplotlib 相结合,制作更加优美的图表
import matplotlib.pyplot as plt
msno.matrix(df,figsize=(25,7),fontsize=30,sort='descending',color=(0.494, 0.184, 0.556),width_ratios=(10, 1),inline=False)
plt.title('Missing Values Pet Dataset', fontsize=55)
plt.show()
2. Tabulate
这个库可以在 Python 中打印出漂亮的表格,允许智能和可定制的列对齐、数字和文本格式、小数点对齐,也是一个数据分析过程中的好用工具。支持的数据类型包括 dataframe, list of lists or dictionaries, dictionary, NumPy array
from tabulate import tabulate
df_pretty_printed = df.iloc[:5, [1,2,4,6]]
print(tabulate(df_pretty_printed))
- ----------- ----------------------- ------ -----
0 Jadzia Domestic Short Hair Female Stray
1 Gonzo German Shepherd Dog/Mix Male Stray
2 Maggie Shep Mix/Siberian Husky Female Stray
3 Pretty Girl Domestic Short Hair Female Stray
4 Pretty Girl Domestic Short Hair Female Stray
- ----------- ----------------------- ------ -----
我们还可以自定义表格头,使用参数 headers
print(tabulate(df_pretty_printed,headers='keys',tablefmt='fancy_grid',stralign='center'))
│ │ animalname │ breedname │ sexname │ returnedreason │
╞════╪══════════════╪═════════════════════════╪═══════════╪══════════════════╡
│ 0 │ Jadzia │ Domestic Short Hair │ Female │ Stray │
├────┼──────────────┼─────────────────────────┼───────────┼──────────────────┤
│ 1 │ Gonzo │ German Shepherd Dog/Mix │ Male │ Stray │
├────┼──────────────┼─────────────────────────┼───────────┼──────────────────┤
│ 2 │ Maggie │ Shep Mix/Siberian Husky │ Female │ Stray │
├────┼──────────────┼─────────────────────────┼───────────┼──────────────────┤
│ 3 │ Pretty Girl │ Domestic Short Hair │ Female │ Stray │
├────┼──────────────┼─────────────────────────┼───────────┼──────────────────┤
│ 4 │ Pretty Girl │ Domestic Short Hair │ Female │ Stray │
╘════╧══════════════╧═════════════════════════╧═══════════╧══════════════════╛
不过这个库打印出的表格数据在手机屏幕上会有一定的兼容性问题,只有在PC机上才能有最佳的显示效果
3. Wikipedia
维基百科库,可以方便的访问维基百科信息,以及获取数据
该库的几个主要功能如下:
搜索维基百科 - search()
获取文章摘要 - summary
获取完整页面内容,包括图像、链接等 - page()
选择语言 - set_lang()
我们以上面数据集当中的 Siberian Husky 为关键词,在维基百科中设置为俄语搜索一下,看看结果
import wikipedia
wikipedia.set_lang('ru')
print(wikipedia.search('Siberian Husky'))
['Сибирский хаски', 'Древние породы собак', 'Маккензи Ривер Хаски', 'Породы собак по классификации кинологических организаций', 'Ричардсон, Кевин Майкл']
我们获取第一个搜索结果当中的第一段话
print(wikipedia.summary('Сибирский хаски', sentences=1))
Сибирский хаски — заводская специализированная порода собак, выведенная чукчами северо-восточной части Сибири и зарегистрированная американскими кинологами в 1930-х годах как ездовая собака, полученная от аборигенных собак Дальнего Востока России, в основном из Анадыря, Колымы, Камчатки у местных оседлых приморских племён — юкагиров, кереков, азиатских эскимосов и приморских чукчей — анкальын (приморские, поморы — от анкы (море)).
下面我们再来获取图片信息
print(wikipedia.page('Сибирский хаски').images[0])
就可以拿到图片了
4. Wget
对于这个库,熟悉 Linux 的同学应该都知道,一个好用的 shell 命令也叫做 wget,是用来下载文件的,这个 Python 库也有着同样的功能
我们来试试下载上面哈士奇图片吧
import wget
wget.download('https://upload.wikimedia.org/wikipedia/commons/a/a3/Black-Magic-Big-Boy.jpg')
'Black-Magic-Big-Boy.jpg'
当然使用该库,我们还可以方便的下载 HTML 文件
wget.download('https://www.kaggle.com/jinbonnie/animal-data')
'animal-data'
下载好的文件内容类似:
<!DOCTYPE html>
<html lang="en">
<head><title>Animal Care and Control Adopted Animals | Kaggle</title><meta charset="utf-8" /><meta name="robots" content="index, follow" /><meta name="description" content="animal situation in Bloomington Animal Shelter from 2017-2020" /><meta name="turbolinks-cache-control" content="no-cache" />
5. Faker
这个库是用来生成假数据的,这个在我们平时的程序测试当中还是非常好用的。它可以生成包括名字、邮件地址、电话号码、工作、句子、颜色,货币等等众多假数据,同时还支持本地化,也就是可以将当前工作语言环境作为参数,生成当前语言的假数据,实在是太贴心了
from faker import Faker
fake = Faker()print('Fake color:', fake.color(), '\n''Fake job:', fake.job(), '\n''Fake email:', fake.email(), '\n')# Printing a list of fake Korean and Portuguese addresses
fake = Faker(['ko_KR', 'pt_BR'])
for _ in range(5):print(fake.unique.address()) # using the `.unique` propertyprint('\n')# Assigning a seed number to print always the same value / data set
fake = Faker()
Faker.seed(3920)
print('This English fake name is always the same:', fake.name())
Fake color: #212591
Fake job: Occupational therapist
Fake email: nancymoody@hotmail.comEstrada Lavínia da Luz, 62
Oeste
85775858 Moura / SE
Residencial de Moreira, 57
Morro Dos Macacos
75273529 Farias / TO
세종특별자치시 강남구 가락거리 (예원박김마을)
전라북도 광주시 백제고분길 (승민우리)
경상남도 당진시 가락53가This English fake name is always the same: Kim Lopez
我们再回到我们的动物数据集,我们发现有两个动物的名字不是特别好
df_bad_names = df[df['animalname'].str.contains('Stink|Pooh')]
print(df_bad_names)
identichipnumber animalname breedname speciesname sexname \
1692 NaN Stinker Domestic Short Hair Cat Male
3336 981020023417175 Pooh German Shepherd Dog Dog Female
3337 981020023417175 Pooh German Shepherd Dog Dog Femalereturndate returnedreason
1692 NaN Stray
3336 2018-05-14 00:00:00 Incompatible with owner lifestyle
3337 NaN Stray
下面我们分别为这两只猫狗重新命名一个好听的名字
# Defining a function to rename the unlucky pets
def rename_pets(name):if name == 'Stinker':fake = Faker()Faker.seed(162)name = fake.name()if name == 'Pooh':fake = Faker(['de_DE'])Faker.seed(20387)name = fake.name()return name# Renaming the pets
df['animalname'] = df['animalname'].apply(rename_pets)# Checking the results
print(df.iloc[df_bad_names.index.tolist(), :] )
identichipnumber animalname breedname speciesname \
1692 NaN Steven Harris Domestic Short Hair Cat
3336 981020023417175 Helena Fliegner-Karz German Shepherd Dog Dog
3337 981020023417175 Helena Fliegner-Karz German Shepherd Dog Dogsexname returndate returnedreason
1692 Male NaN Stray
3336 Female 2018-05-14 00:00:00 Incompatible with owner lifestyle
3337 Female NaN Stray
怎么样,名字是不是好听多了
6. Numerizer
该库可以将自然语言转化为数字,我们来看看吧
我们先来获取名称中包含数据的动物的信息
df_numerized_names = df[['identichipnumber', 'animalname', 'speciesname']]\[df['animalname'].str.contains('Two|Seven|Fifty')]
df_numerized_names
下面我们就把名称中的数字转化成阿拉伯数字
from numerizer import numerize
df['animalname'] = df['animalname'].apply(lambda x: numerize(x))
df[['identichipnumber', 'animalname', 'speciesname']].iloc[df_numerized_names.index.tolist(), :]
7. Emoji
符号库,我们可以根据 Unicode Consortium 2 定义的表情符号代码将字符串转换为表情符号,emoji 库只有两个函数:emojize() 和 demojize()
import emoji
print(emoji.emojize(':koala:'))
print(emoji.demojize(''))
print(emoji.emojize(':rana:', language='it'))
8个很少用,但却很好用的 Python 库相关推荐
- 很少人知道,但是非常实用的 Python 库
Python 是一个很棒的语言.它是世界上发展最快的编程语言之一.它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性.整个 Python 及其库的生态系统使它成为全世界用户(初学者和 ...
- excel内容少却文件很大_(excel内容很少,文件却很大,怎么解决)excel表格数据少但是过大怎么办...
如何处理数据很少文件却很大的Excel表格 有时面某无用列单元格出现时,会计算.(假如在zz128单元格误打一空格,是很难发现的,如果实际数据只有两列或比较少的列就会因为这一个空格占了很大的空间.)可 ...
- Oracle数据库表,数据量很少,但是查询很慢
Oracle数据库表,数据量很少,但是查询很慢 1.起因 1.1.原因排查 1.2.原因分析 2.解决方式 2.1.删表重建这张表(95%解决一切问题) 2.2.建索引(目前用的) 1.起因 一开始是 ...
- Excel表数据很少,内存占用很大
问题描述 一个Excel表中只有很少的数据,但是占用了很大的空间. 打开该Excel表发现,横向滚动轴或纵向滚动轴很长,但是没有数据(滚动轴能滚到的区域基本是这个sheet占用的区域) 通过Ctrl+ ...
- 很少人知道但很有用的 Linux 命令
Linux命令行吸引了大多数Linux爱好者.一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务.Linux命令和它们的转换对于Linux用户.Shell脚本程序员和管理员来说是最有 ...
- 长知识了!这8个很少用但却很实用的 Python 库真棒!
欢迎关注 ,专注Python.数据分析.数据挖掘.好玩工具! 本文介绍一些我们可能很少听过,但是对于特定问题或者特定任务来说,却非常实用的工具包,文末提供技术交流群,欢迎大家一起学习讨论. 为了配合上 ...
- 为什么计算机学硕人那么少,考研分数看似不高,为什么考上的人相对很少?总结得很精辟...
考研分数看着不高实则是因为总分不高 很多人把考研和高考相比较,高考550才能上一本线,而考研只要350就能上线了.可是不要忘记了高考满分是750分,而考研满分才500分. 考研分数有总分和单科分数的要 ...
- 几款别具一格的电脑软件 很少人知道却很实用
电脑和手机一样,根据我们的需求会在桌面上下载不同的软件,当然有时候也会盲目的下载,你们先别急,小编绝对不会让你们浪费流量和时间的,下面给大家分享的电脑软件,你们使用过嘛? 360壁纸 360壁纸是一款 ...
- 为什么抖音账号作品很少粉丝却很多,抖音删除的粉丝还能看到吗
经常刷抖音直播的小伙伴一定也有和我一样的问题,为什么有的直播间明明播主的粉丝数很少,人气却很高? 抖音直播是抖音变现的主要手段,大家都可以通过直播来获取粉丝的支持. 很多小伙伴想直播但粉丝很多,在这种 ...
- Unix / 类 Unix shell 中有哪些很酷很冷门很少用很有用的命令?(转)
著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:孙立伟 链接:http://www.zhihu.com/question/20140085/answer/14107336 ...
最新文章
- C#对Microsoft.VisualBasic My对象兰台妙选【月儿原创】
- SAP WM高阶之Storage Type上架策略L下的Mixed Storage
- 过滤所有用户的行车轨迹查找在某一区域内的用户
- vi和vim的基础使用
- 微软自带输入法如何关闭桌面右下角「拼」图标
- MyBatis_ibatis和mybatis的区别【转】
- EDS之后的block
- 在OSPF网络中,如何判断LSA的新旧?
- 模块化方案esl以及amd的依赖方式
- 无人机计算机模拟飞行,学习无人机,怎么安装无人机模拟器?
- mysql建立数据库连接时出错_建立数据库连接时出错什么意思(手把手教你如何建立数据库连接)...
- C盘文件分析(如何减小C盘容量)
- MentoHUST的使用教程
- IDEA默认KeyMap映射快捷键
- 用python爬取拉勾网招聘信息并以CSV文件存储
- jqwidgets简单技术
- 常见的Hash算法(General Purpose Hash Function Algorithms)
- python实现图像识别水果_使用Python实现基于图像识别的iOS自动化测试
- 统计学基础专栏04---回归和预测
- python-合并两个列表并去重
热门文章