15种Python片段去优化你的数据科学管道
来源:15 Python Snippets to Optimize your Data Science Pipeline
翻译:RankFan
15种Python片段去优化你的数据科学管道
为什么片段对于数据科学是重要的
在我的日常中,我经常处理许多同样的状况,主要是从加载 csv 文件到数据可视化。因此,为了流水线这个过程,我有兴趣去储存一些 code 片段, 在不同的情形下,加载csv文件到数据可视化是非常有帮助的。
在这篇短文中,我将分享15个Python片段去简化你不同的数据分析管道。
1. 通过 GLob 和 List 加载多个文件
import glob
import pandas as pd
csv_files = glob.glob("path/to/folder/with/csvs/*.csv")
dfs = [pd.read_csv(filename) for filename in csv_flies]
2. 得到列中的唯一值
import pandas as pd
df = pd.read_csv("path/to/csv/file.csv")
df = ["Item_Identifier"].unique()
array['FDA15', 'DRC01', 'FDN15', ..., 'NCF55', 'NCW30', 'NCW05'],dtype = object]
3. 并排展示Pandas Dataframe
from IPython.display import display_html
from itertools import chain, cycle
def display_side_by_side(*arg, title = cycle([''])):
html_str = ""
for df, title in zip(args, chain(title, cycle(['</br>']))):
html_str += '< the style = " text-align : center "> < td style = "vertical-align : top">'
html_str += "<br>"
html_str += f'<h2>{title}</h2>'
html_str += df.to_html().replace('table', tabel style="display:inline")
html_str += '</td></th>'
display_html(html_str, raw = True)
df1 = pd.csv_read("file_csv")
df2 = pd.csv_read("file2")
dispaly_side_by_side(df1.head(), df2.head(), titles=[Sales, Advertising])
4. 移除Pandas DataFrame中的缺失值
df = pd.DataFrame(dict(a = [1, 2, 3, None]))
df
df.dropna(inplace = True)
df
5. 显示缺失值的个数
def FindNanCol(df):
for col in df:
print(f"Column : {col}")
num_Nans = df[col].isnull().sum()
print(f"Number of Nans : {num_Nans}")
df = pd.DataFrame(dict(a = [1, 2, 3, None], b = [None, None, 5, 6]))
FindNanCol(df)
6. 使用.apply 函数和 lambda 函数 转变列
df = pd.DataFrame(dict(a = [10, 20 ,30, 40, 50]))
square = lambda x: x**2
df["a"] = df["a"].apply(square)
df
7. 将两个DataFrame列转化为字典
df = pd.DataFrame(dict(a = ["a", "b", "c"], b = [1, 2, 3]))
df_dictionary = dict(zip(df["a"], df["b"]))
df_dictionary
8. 绘制列的网格分布
import numpy as np
import matplotlib.pyplot as plt
import seaborns as sns
import pandas as pd
sns.set()
df = pd.DataFrame(dict(a = np.random.randint(0, 100, 100), b = np.arange(0, 100, 1)))
plt.figure(figsize = (15,7))
plt.subplot(1, 2, 1)
df["b"][df["a"]>50].hist(color='green', label="bigger than 50")
plt.legend()
plt.subplot(1, 2, 1)
df["b"][df["a"]<50].hist(color='orange', label="small than 50")
plt.legend()
plt.show
9. 在pandas中对不同的列进行t检验
from scipy.stats import ttest_rel
data = np.arange(0, 1000, 1)
data_plus_noise = np.arange(0, 1000, 1) + np.random.normal(0, 1, 1000)
df = pd.DataFrame(dict(data = data, data_plus_noise = data_plus_noise))
print(ttest_rel(df["data"], df["data_plus_noise"]))
10. 合并数据
df1 = pd.DataFrame(dict(a = [1, 2, 3], b=[10, 20, 30], col_to_merge= ["a", "b", "c"]))
df2 = pd.DataFrame(dict(d = [10, 20, 30], col_to_merge=["a", "b", "c"]))
df_merged = df1.merge(df2, on='col_to_merge')
11. 用sklearn进行标准化
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scores = scaler.fit_transform(df["a"].values.reshape(-1, 1))
12. 丢弃特定列的缺失值
df.dropna(subset = ["col_to_remove_NaNs_from"], inplace = True)
13. 有条件的选择dataframe的子集
df = pd.Dataframe(dict(result = ["pass", "Fail", "pass", "Fail", "Distinction", "Distinction"]))
pass_index = (df["result"] == "pass") | (df["result"] == "Distinction")
df_pass = df['pass_index']
df_pass
14. 饼图
import matplotlib.pyplot as plt
df = pd.DataFrame(dict(a = [10, 20, 50, 10, 10], b=["A", "B", "C", "D", "E"]))
labels = df["b"]
sizes = df["a"]
plt.pie(sizes, labels = labels, autopct = '%1.1f%%', shadow = True, startangle=140)
plt.axis('equal')
plt.show
15. 将百分数字符串转化为数值
def change_to_numerical(x):
try:
x = int(x.strip("%")[:2])
except:
x = int(x.strip("%")[:1])
return x
df = pd.DataFrame(dict(a =["A", "B" ,"C"], col_with_percentage = ["10%", "20%", "70%"]))
df["col_with_percentage"] = df["col_with_percentage"].apply(change_to_numerical)
df
结论
我认为代码片段是非常有用,重新写是浪费时间的,因此,有一个完整的工具包可以对数据分析进行流水线处理,这是非常有帮助的。
15种Python片段去优化你的数据科学管道的更多相关文章
- 探讨2018年最受欢迎的15顶级Python库!
近日,数据科学网站 KDnuggets 评选出了顶级 Python 库 Top15,领域横跨数据科学.数据可视化.深度学习和机器学习.如果本文有哪些遗漏,你可以在评论区补充. 图 1:根据 GitHu ...
- 数据处理一条龙!这15个Python库不可不知
如果你是一名数据科学家或数据分析师,或者只是对这一行业感兴趣,那下文中这些广受欢迎且非常实用的Python库你一定得知道. 从数据收集.清理转化,到数据可视化.图像识别和网页相关,这15个Python ...
- 干货!小白入门Python数据科学全教程
前言 本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据 ...
- 为什么说 Python 是数据科学的发动机(一)发展历程(附视频中字)
为什么说 Python 是数据科学的发动机(一)发展历程(附视频中字) 在PyData Seattle 2017中,Jake Vanderplas介绍了Python的发展历程以及最新动态.在这里我们把 ...
- 3 个用于数据科学的顶级 Python 库
使用这些库把 Python 变成一个科学数据分析和建模工具. Python 的许多特性,比如开发效率.代码可读性.速度等使之成为了数据科学爱好者的首选编程语言.对于想要升级应用程序功能的数据科学家和机 ...
- Python 代码性能优化技巧(转)
原文:Python 代码性能优化技巧 Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化. ...
- 小测几种python web server的性能
http://blog.csdn.net/raptor/article/details/8038476 因为换了nginx就不再使用mod_wsgi来跑web.py应用了,现在用的是gevent-ws ...
- 斐波那契数列的5种python实现写法
斐波那契数列的5种python写法 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖 ...
- Java 中15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁,乐观锁,分段锁,自旋锁等等
Java 中15种锁的介绍 Java 中15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁,乐观锁,分段锁,自旋锁等等,在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类 ...
随机推荐
- springboot中@Mapper和@Repository的区别
@Mapper和@Repository是常用的两个注解,两者都是用在dao上,两者功能差不多,容易混淆,有必要清楚其细微区别: 区别: @Repository需要在Spring中配置扫描地址,然后生成 ...
- plsql developer中各个window的作用【转】
转载自,原文链接: -程序窗口(program window) :可以执行 sql,sqlplus 相关的语句,例如存储过程,方法,一般用来开发程序用的. -测试窗口(test window):一般是 ...
- java 循环移位输出全排列
//题目:利用1.2.2.3.4这4个数字,用java写一个main函数打印出所有不同的排列,如12234,,2234等,要求打印出来不能有重复 1 package test123; 2 3 impo ...
- windows 10 + tensorflow-gpu 环境搭建
安装过程可基本按照ubuntu装法,参考https://www.cnblogs.com/xbit/p/9768238.html 其中: conda配置文件:C:\Users\Administrator ...
- javascript 之迭代器
简介 迭代器是一种设计模式,可在容器对象 如 链表.数组上遍历,无需关心容器对象的内存分配的实现细节.简单的理解就是可以一个一个的依次拿到其中的数据,类似一个移动的指针,但是会告诉我们什么时候结束.这 ...
- Centos7部署Open-falcon 0.2.0
官方和github上都有教程,但是对于我来说有的部署内容较为陌生,有点错误官方也未在教程中说明,故在此记录方便以后快速部署,本文部署的时间是2018/10/10. 虽然open-falcon是采用了前 ...
- Linux系统的日志管理、时间同步、延迟命令at
方便查看和管理 /var/log/messages ?系统服务及日志,包括服务的信息,报错等等 /var/log/secure ? ? ? ? 系统认证信息日志 /var/log/maillog ? ...
- vue 引入 tcplayer,并且实现视频点播,腾讯点播
这篇文章仅用于上传到 腾讯的视频点播,上传到腾讯视频请看上一篇文章,话不多说,直接上代码 <template> <div> <video :id="tcPlay ...
- Shiro03
1.shiro授权角色.权限 2.Shiro的注解式开发 shiro权限思路 授权 ShiroUserMapper中定义两个方法 // 通过用户ID查询角色 Set<String> get ...
- python 常用的文件操作命令
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件 ...