点击上方“早起python”,关注早起
和我一起,成为更好的自己
今天整理了几个在使用python进行数据分析的常用小技巧、命令。记得搭配Pandas+Jupyter Notebook使用哦。
01
使用Pandas Profiling预览数据
import pandas as pd
import pandas_profiling
nba = pd.read_csv('nba_all_elo.csv') #导入数据
nba.profile_report()
类型推断:检测数据帧中列的数据类型。
要点:类型,唯一值,缺失值
分位数统计信息,例如最小值,Q1,中位数,Q3,最大值,范围,四分位数范围
描述性统计数据,例如均值,众数,标准偏差,总和,中位数绝对偏差,变异系数,峰度,偏度
最常使用的值
直方图
相关性矩阵
缺失值矩阵,计数,热图和缺失值树状图
文本分析:了解文本数据的类别(大写,空格),脚本(拉丁,西里尔字母)和块(ASCII)
02
使用cufflinks绘制图表
上一个神器Pandas Profiling可以快速帮助我们预览数据,那么这个神器cufflinks可以帮我们直接使用DataFrame快速绘制交互式图表。就像seaborn封装了matplotlib一样,cufflinks在plotly的基础上做了一进一步的包装,方法统一,参数配置简单。
对pandas熟悉的同学可能知道pandas可以直接调用.plot()绘图,我们来看看
df.plot()
如果使用cufflinks来绘制,也是一行代码
df.iplot()
是不是交互式的图表更得人心?当然还可以直接使用DataFrame绘制其他复杂的图表
如果在数据分析工作中经常需要数据可视化的话就考虑使用cufflinks吧!
03
使用notebook的Magic命令
%store:在不同notebook间传递变量
不知道大家有没有经历过在一个notebook中进行数据预处理数据清洗等相关工作,在另一个notebook中进行可视化相关工作,那么怎样在绘图时直接调用另一个notebook中的数据呢?使用%store就可以轻松解决
%store 变量 #保存变量
%store -r 变量 #在另一个notebook中调用变量
%who:列出全部变量
%debug:交互式调试
04
使用jupyter快捷键
Jupyter作为生成嵌入式代码的优秀编辑器自带了很多快捷键,熟练使用快捷键将会省去很多繁琐的鼠标点击操作,可以使用
Cmd + Shift + P
或Ctrl + Shift + P
在Linux和Windows上查看有哪些快捷键。
常用的比如
Tab : 代码补全或缩进
Shift-Tab : 提示
Ctrl-] : 缩进
Ctrl-[ : 解除缩进
Ctrl-Home : 跳到单元开头
Ctrl-Up : 跳到单元开头
Ctrl-End : 跳到单元末尾
Ctrl-Down : 跳到单元末尾
Ctrl-Left : 跳到左边一个字首
Ctrl-Right : 跳到右边一个字首
05
使用pprint
pprint
是pretty printer 的缩写,用来打印 Python 数据结构,与
print
相比,它打印出来的结构更加整齐,便于阅读。
06
掌握多种处理异常值方法
在使用python进行数据分析时,如果数据集中出现缺失值、空值、异常值,那么数据清洗就是尤为重要的一步。因此掌握多种使用python处理异常值处理的方法,并在开始数据分析之前对异常值进行预处理会大大提升数据分析效率。
例如,将丢失的数据替换为'*'。我们可以使用
.fillna('*')
将
所有缺失值替换为*,或者
data.fillna(axis=1,method='ffill')
来横向/纵向用缺失值前面的值替换缺失值,那么更多的异常值处理方法可以参阅python数据分析之清洗数据:缺失值处理
07
使用-i执行python脚本
我们都知道在命令行执行python脚本可以使用python filename.py,而我推荐使用
python -i filename.py
去执行python脚本,因为这样在脚本执行完毕之后,python不会退出编译器。从而我们可以检查变量的值或继续进行操作。
而如果我们的代码发生了报错的话,该命令会直接定位到代码发生异常的位置,然后我们可以更方便的去处理代码,我们来看看
08
分批读取数据
有时当我们使用pandas读取的数据文件非常大的时候,如果直接一次性读取全部数据会出现内存不够用的情况,所以这时我们应该对该数据进行分批次读取,并处理每一批次然后保存每一批次的结果,最后对全部批次结果进行汇总。
import pandas as pd
data = pd.read_csv("data.csv",chunksize=10000) #chunksize是每一批次处理的数量
result = [] #用于储存结果
for chunk in data:
#写一个函数处理每一个批次
filter_result = chunk_manipulate(chunk)
result.append(filter_result)
#合并所有批次
df = pd.concat(result)
本文分享自微信公众号 - TechFlow(techflow2019)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4579195/blog/4344650