Python数据分析实用程序
- 来源 | 愿码(ChainDesk.CN)内容编辑
- 愿码Slogan | 连接每个程序员的故事
- 网站 | http://chaindesk.cn
- 愿码愿景 | 打造全学科IT系统免费课程,助力小白用户、初级工程师0成本免费系统学习、低成本进阶,帮助BAT一线资深工程师成长并利用自身优势创造睡后收入。
- 官方公众号 | 愿码 | 愿码服务号 | 区块链部落
- 免费加入愿码全思维工程师社群 | 任一公众号回复“愿码”两个字获取入群二维码
本文阅读时长:13min
本文包含以下部分:
- 数据分析,数据科学,大数据
- Python的数据分析简史
- dautil的高级概述
- IPython笔记本实用程序
- 下载数据
- 绘制实用程序
- 揭开Docker的神秘面纱
数据分析,数据科学,大数据
您可能已经看到维恩图将数据科学描述为数学/统计学,计算机科学和领域专业知识的交集。数据分析是永恒的,并且在数据科学和计算机科学之前存在。您可以使用笔和纸进行数据分析,并在更现代的时候使用袖珍计算器进行数据分析。
数据分析涉及许多方面,例如做出决策或提出新的假设和问题。围绕数据科学和大数据的炒作,状态和经济回报让我想起了数据仓库和商业智能成为流行语的时间。商业智能和数据仓库的最终目标是构建管理仪表板。这涉及很多政治和组织方面,但在技术方面,主要是关于数据库。另一方面,数据科学不是以数据库为中心的,而是在很大程度上依赖于机器学习。机器学习由于数据量较大,技术已成为必要。数据增长是由世界人口的增长和社交媒体和移动设备等新技术的兴起引起的。实际上,数据增长可能是我们可以确定的唯一趋势。构建仪表板和应用机器学习之间的区别与搜索引擎的演变方式类似。
搜索引擎最初只不过是手工创建的组织良好的链接集合。最终,自动化方法获胜。由于将及时创建更多数据(而不是销毁),我们可以预期自动数据分析会增加。
Python的数据分析简史
- 1989年:Guido van Rossum在荷兰的CWI实施了第一个Python版本,作为圣诞节爱好项目。
- 1995年:Jim Hugunin创建了NumPy的前身Numeric。
- 1999年:Pearu Peterson将f2py描述为Fortran和Python之间的桥梁。
- 2000:Python 2.0发布。
- 2001:SciPy库发布。此外,还创建了Numarray,一个竞争的数字库。费尔南多佩雷斯发布了IPython,这是一个下午的黑客攻击。NLTK作为一个研究项目发布。
- 2002年:John Hunter创建了matplotlib库。
- 2005年:NumPy由Travis Oliphant发布。最初,NumPy是Numeric扩展,其功能受到Numarray的启发。
- 2006:NumPy 1.0发布。SQLAlchemy的第一个版本发布了。
- 2007年:scikit-learn项目由David Cournapeau发起为Google Summer of Code项目。Cython是从Pyrex分叉的。Cython后来被大量用于熊猫和scikit-学习以提高性能。
- 2008年:Wes McKinney开始研究Pandas。Python 3.0发布了。
- 2011:IPython 0.12版本引入了IPython笔记本。Packt发布了NumPy 1.5初学者指南。
- 2012年:Packt发布了NumPy Cookbook。
- 2013:Packt发布NumPy初学者指南 - 第二版。
- 2014年:Fernando Perez宣布Project Jupyter,旨在打造一款与语言无关的笔记本电脑。Packt发布了学习NumPy数组和Python数据分析。
- 2015:Packt发布NumPy初学者指南 - 第三版和NumPy Cookbook - 第二版。
dautil的高级概述
dautil模块总结在下表中:
模 | 描述 | LOC |
---|---|---|
dautil.collect | 包含与集合相关的实用程序 | 331 |
dautil.conf | 包含配置实用程序 | 48 |
dautil.data | 包含用于下载和加载数据的实用程序 | 468 |
dautil.db | 包含与数据库相关的实用程序 | 98 |
dautil.log_api | 包含日志实用程序 | 204 |
dautil.nb | 包含IPython / Jupyter笔记本小部件和实用程序 | 609 |
dautil.options | 配置与数据分析相关的多个库的动态选项 | 71 |
dautil.perf | 包含与性能相关的实用程序 | 162 |
dautil.plotting | 包含绘图实用程序 | 382 |
dautil.report | 包含报告实用程序 | 232 |
dautil.stats | 包含统计函数和实用程序 | 366 |
dautil.ts | 包含时间序列和日期的实用程序 | 217 |
dautil.web | 包含用于Web挖掘和HTML处理的实用程序 | 47 |
IPython笔记本实用程序
IPython笔记本已成为数据分析的标准工具。该dautil.nb有几个互动IPython的小部件,以帮助乳胶渲染,matplotlib属性的设置,和绘图。Ivan定义了一个Context类,它表示小部件的配置设置。这些设置存储在当前工作目录中名为dautil.json的漂亮打印的JSON文件中。这可以扩展,甚至可以使用数据库后端。以下是一个示例dautil.json的编辑摘录(因此它不占用大量空间):
{..."calculating_moments": {"figure.figsize": [ 10.4, 7.7 ],"font.size": 11.2},"calculating_moments.latex": [ 1, 2, 3, 4, 5, 6, 7 ],"launching_futures": {"figure.figsize": [ 11.5, 8.5 ]},"launching_futures.labels": [ [ {}, {"legend": "loc=best","title": "Distribution of Means"}],[{"legend": "loc=best","title": "Distribution of Standard Deviation"},{"legend": "loc=best","title": "Distribution of Skewness"}]],...}
Context对象可以使用字符串构建 - Ivan建议使用笔记本的名称,但任何唯一标识符都可以。该dautil.nb.LatexRenderer还使用了Context类。它是一个实用程序类,可帮助您在IPython / Jupyter笔记本中编号和渲染Latex方程式,例如,如下所示:
import dautil as dllr = dl.nb.LatexRenderer(chapter=12, context=context)lr.render(r'delta! = x - m')lr.render(r'm' = m + frac{delta}{n}')lr.render(r'M_2' = M_2 + delta^2 frac{ n-1}{n}')lr.render(r'M_3' = M_3 + delta^3 frac{ (n - 1) (n - 2)}{n^2}/- frac{3delta M_2}{n}')lr.render(r'M_4' = M_4 + frac{delta^4 (n - 1) /(n^2 - 3n + 3)}{n^3} + frac{6delta^2 M_2}/{n^2} - frac{4delta M_3}{n}')lr.render(r'g_1 = frac{sqrt{n} M_3}{M_2^{3/2}}')lr.render(r'g_2 = frac{n M_4}{M_2^2}-3.')
结果如下:
您可能会发现有用的另一个小部件是RcWidget,它设置matplotlib设置,如以下屏幕截图所示:
下载数据
有时,我们需要样本数据来测试算法或原型可视化。在dautil.data模块中,您将找到许多用于数据检索的实用程序。模块中的一些实用程序在现有的pandas函数之上添加了一个缓存层,例如从世界银行和Yahoo!下载数据的pandas函数。您还可以获取音频,人口统计,Facebook和营销数据。
数据存储在特殊数据目录下,该目录取决于操作系统。以下示例代码从SPAN Facebook数据集加载数据并计算clique数:
import networkx as nximport dautil as dlfb_file = dl.data.SPANFB().load()G = nx.read_edgelist(fb_file,create_using=nx.Graph(),nodetype=int)print('Graph Clique Number',nx.graph_clique_number(G.subgraph(list(range(2048)))))
绘制实用程序
Ivan在书中经常可视化数据。绘图有助于我们了解数据的结构,并帮助您形成假设或研究问题。通常,我们想要绘制多个变量,但我们希望很容易看出它是什么。matplotlib中的标准解决方案是循环颜色。但是,Ivan更喜欢循环线宽和线条样式。以下单元测试演示了他对此问题的解决方案:
def test_cycle_plotter_plot(self):m_ax = Mock()cp = plotting.CyclePlotter(m_ax)cp.plot([0], [0])m_ax.plot.assert_called_with([0], [0], '-', lw=1)cp.plot([0], [1])m_ax.plot.assert_called_with([0], [1], '--', lw=2)cp.plot([1], [0])m_ax.plot.assert_called_with([1], [0], '-.', lw=1)
该dautil.plotting模块目前也有次要情节,直方图,回归图使用的辅助工具,并处理彩色地图。下面的示例代码(标签的代码已被省略)演示了条形图实用程序功能和dautil.data的实用程序功能,它下载了股票价格数据:
import dautil as dlimport numpy as npimport matplotlib.pyplot as pltratios = []STOCKS = ['AAPL', 'INTC', 'MSFT', 'KO', 'DIS', 'MCD', 'NKE', 'IBM']for symbol in STOCKS:ohlc = dl.data.OHLC()P = ohlc.get(symbol)['Adj Close'].valuesN = len(P)mu = (np.log(P[-1]) - np.log(P[0]))/Nvar_a = 0var_b = 0for k in range(1, N):var_a = (np.log(P[k]) - np.log(P[k - 1]) - mu) ** 2var_a = var_a / Nfor k in range(1, N//2):var_b = (np.log(P[2 * k]) - np.log(P[2 * k - 2]) - 2 * mu) ** 2var_b = var_b / Nratios.append(var_b/var_a - 1)_, ax = plt.subplots()dl.plotting.bar(ax, STOCKS, ratios)plt.show()
有关最终结果,请参阅以下屏幕截图:
代码执行随机游走测试并计算股票价格列表的相应比率。每当您运行代码时都会检索数据,因此您可能会得到不同的结果。
以下脚本演示了世界银行数据的线性回归实用程序和缓存下载程序(省略了水印和绘图标签的代码):
import dautil as dlimport matplotlib.pyplot as pltimport numpy as npwb = dl.data.Worldbank()countries = wb.get_countries()[['name', 'iso2c']]inf_mort = wb.get_name('inf_mort')gdp_pcap = wb.get_name('gdp_pcap')df = wb.download(country=countries['iso2c'],indicator=[inf_mort, gdp_pcap],start=2010, end=2010).dropna()loglog = df.applymap(np.log10)x = loglog[gdp_pcap]y = loglog[inf_mort]dl.options.mimic_seaborn()fig, [ax, ax2] = plt.subplots(2, 1)ax.set_ylim([0, 200])ax.scatter(df[gdp_pcap], df[inf_mort])ax2.scatter(x, y)dl.plotting.plot_polyfit(ax2, x, y)plt.show()
代码应显示以下图像:
该计划下载2010年世界银行数据,并将婴儿死亡率与人均GDP进行对比。还示出了对数变换数据的线性拟合。
揭开Docker的神秘面纱
Docker使用Linux内核功能来提供额外的虚拟化层。它由Solomon Hykes于2013年创建。Boot2Docker允许我们在Windows和Mac OS X上安装Docker。Boot2Docker使用包含带有Docker 的Linux环境的VirtualBox VM 。介绍中提到的Ivan的Docker镜像基于continuumio / miniconda3 Docker镜像。
安装Boot2Docker后,需要对其进行初始化。这只需要一次,Linux用户不需要这一步:$ boot2docker init
Mac OS X和Windows用户的下一步是启动VM:
$ boot2docker start
通过启动示例容器来检查Docker环境:
$ docker run hello-world
Docker镜像组织在一个类似于GitHub的存储库中。制作人推送图像,消费者拉动图像。您可以使用以下命令拉出Ivan的存储库。目前的大小为387 MB。
$ docker pull ivanidris/pydacbk
Python数据分析实用程序相关推荐
- python数据分析要学什么_python数据分析学什么?python数据分析入门
有很多没有基础的新手想学习python数据分析,却在纠结python数据分析难不难学?下面万古网校小编给大家整理了资料,为各位分享! 1.python难不难? Python可以说是目前比较主流而且易学 ...
- python数据分析基础 余本国_Python数据分析基础
本书根据作者多年教学经验编写, 条理清楚, 内容深浅适中, 尽量让读者从实例出发, 结合课后练习, 少走弯路.本书涉及的内容主要包括Python数据类型与运算.流程控制及函数与类.Pandas库的数据 ...
- 《Python数据分析与挖掘实战》一3.1 数据质量分析
本节书摘来自华章出版社<Python数据分析与挖掘实战>一书中的第3章,第3.1节,作者 张良均 王路 谭立云 苏剑林,更多章节内容可以访问云栖社区"华章计算机"公众号 ...
- 为什么学习Python数据分析
为什么学习Python数据分析?这是很多人都比较关注的一个问题,Python编程语言近几年在互联网行业是非常火爆的,尤其是在人工智能这一领域,它会大大的提高我们的工作效率等等,具体来看看下面的详细介绍 ...
- Python数据分析可以应用到哪些领域
随着大数据的应用越来越广泛,应用的行业也越来越多,我们每天都可以看到一些关于数据分析的新鲜应用,从而帮助人们获取到有价值的信息.例如,网购时经常发现电商平台向我们推荐商品,往往这类商品都是我们最近浏览 ...
- 1行代码实现Python数据分析:图表美观清晰,自带对比功能丨开源
公众号关注 "视学算法" 设为 "星标",DLCV消息即可送达! 萧箫 发自 凹非寺 转自 | 量子位 你是否也在朋友圈看过这样的小广告: 「你要悄悄学Pyth ...
- 靠Python数据分析已赚10w的本科生,附赠学习资料
今天小编给大家推荐一个Python终身学习者:老表,他是开源学习组织Datawhale终身成员,有一年半的Python编程学习经验,热爱爬虫与数据分析,掌握了Python Web开发框架 Flask, ...
- 只要60页!牛逼不行的Python数据分析入门知识手册
一个月不走弯路快速入门学python和python数据分析路线,呕心沥血加班加点做了2天,一共63页,该课件讲的都是路线中的核心知识,今天把该PPT分享给大家,能根据该课件提到的知识有针对性的学,做到 ...
- 图文并茂!60页PPT《快速入门python数据分析路线》(附链接)
一个月不走弯路快速入门学python和python数据分析路线,呕心沥血加班加点做了2天,一共63页,该课件讲的都是路线中的核心知识,今天把该PPT分享给大家,能根据该课件提到的知识有针对性的学,做到 ...
最新文章
- Python Open Source Project List
- ROS 安装kinect驱动+测试
- 基于单片机的水壶自动加热系统_基于单片机的智能热水壶设计说明
- html text报错,AFNetWorking 请求报错 text/html
- C语言 从指定文件中依次读出字符直至文件结束
- MySQL大数据量分页查询方法及其优化
- Uva 11077 Find the Permutation
- iOS之深入解析少见却神奇的NSProxy类的多种使用
- 数组名和取数组名的区别
- node 抓取api数据导出为excel表格
- InceptionNet与mobileNet
- Springboot03整合SpringDataJPA访问MySQL数据库
- Job 存储和持久化 (第一部分)
- Zookeeper启动和Leader选举机制
- python 树状图代码_Python 无限级分类树状结构生成算法 「实用代码」
- PPT转pdf保存动画效果
- 计算机网络习题——循环冗余校验
- win10无法连接wifi_更新WIN10 1903遇到旧版高通驱动无法连接WIFI重新安装网卡驱动...
- 查理芒格思维模型 —— 费马帕斯卡系统
- Notes Domino V12Beta划重点