Python 数据科学入门

http://python.jobbole.com/85394/

Python 在数据科学领域越来越流行了。它的流行不无道理。 Python 容易学,有超强数据科学库,并且和 Hadoop 以及 Spark 等数据库和工具整合得非常好。Python 可以从头至尾完成一个数据科学项目,无论是读取数据、分析数据、数据可视化还是用机器学习来做预测都可以。
本文介绍如何用 Python 上手数据科学。如果想要了解更多内容请访问 Dataquest, 那里有使用 Python 完成数据科学任务的深入讲解。

本文使用的是关于 2016 美国总统大选政治资助的数据集(链接 在此)。文件是 csv 格式,每行代表对一个候选人的一次捐赠。这个数据集有几列比较值得一提,比如:

cand_nm – 接受捐赠的候选人姓名
contbr_nm – 捐赠人姓名
contbr_state – 捐赠人所在州
contbr_employer – 捐赠人所在公司
contbr_occupation – 捐赠人职业
contb_receipt_amount – 捐赠数额(美元)
contb_receipt_dt – 收到捐款的日期
安装 Python

要分析这些数据,首先要安装 Python。利用 Anaconda 这个工具来安装 Python 是非常简单的。Anaconda 在安装 Python 的同时还会安装一些流行的数据分析库。点击 这里 下载 Anaconda。建议安装最新的 Python 3.5 版本。这个链接 里介绍了一些 Python 2 与 Python 3 的对比。

Anaconda 会自动安装一些这篇文章会用到的库,包括 Jupyter、Pandas、scikit-learn 和 matplotlib。

Jupyter 入门

都安装好之后可以启动 Jupyter notebook (原名 IPython notebook)。Jupyter notebook 是个强有力的数据分析工具。它能够帮助快速查看数据、将结果可视化以及把结果分享给他人。谷歌、IBM、微软的数据科学家都用它来分析数据以及组内协作。

在命令行里输入 ipython notebook 来运行 Jupyter。如果遇到问题可以去它的 官方文档 里查找答案。

启动后会出现一个可以查看文件的浏览器界面,在这个页面上可以创建新的 notebook。请创建一个叫 Python 3 的 notebook,一会儿的数据分析中会用到它。如果刚才的安装还没成功,这篇文章 也许有帮助。

Notebook 工作区块

每个 Jupyter notebook 都包含多个区块(cell),区块可以运行代码也可以只包含文档。每个 notebook 开始时都自带一个区块,如有需要可以自行增加多个区块,比如:

In [ ]:
Python
1
2
3
4

代码区块示例。产生的输出会在下方显示。

print(10)
b = 10
In [ ]:
Python
1
2
3
4

可以建立多个区块,每个代码区块可以根据分析的需求跑任意次

Jupyter notebook 中一个很赞的功能是每个区块跑出来的结果会被缓存起来, 这样一个区块可以利用另一个区块跑出来的结果。

print(b * 10)
如果想要了解更多关于 Jupyter 的知识请阅读作者提供的更深入的 教程。

Pandas 入门

Pandas 是 Python 上的一个数据分析库。它能读取包括 csv 在内的不同格式的数据,分析数据也很有效。可以通过下面的代码来读取数据:

In [2]:
Python
1
2
3
import pandas as pd

donations = pd.read_csv(“political_donations.csv”)
In [3]:
1
donations.shape
Out[3]:
1
(384885, 18)
In [4]:
Python
1
donations.head(2)
Out[4]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num tran_id election_tp
C00458844 P60006723 Rubio, Marco KIBBLE, KUMAR DPO AE 092131903 U.S. DEPARTMENT OF HOMELAND SECURITY LAW ENFORCEMENT 500 27-AUG-15 NaN NaN NaN SA17A 1029457 SA17.813360 P2016 NaN
C00458844 P60006723 Rubio, Marco HEFFERNAN, MICHAEL APO AE 090960009 INFORMATION REQUESTED PER BEST EFFORTS INFORMATION REQUESTED PER BEST EFFORTS 210 27-JUN-15 NaN NaN NaN SA17A 1029436 SA17.796904 P2016 NaN
上面的区块用 import pandas as pd 这个语句导入了 Pandas 库,然后用 read_csv() 这个函数把 political_donations.csv 这个文件读入了变量 donations 中。变量 donations 现在就是一个 Pandas DataFrame。Pandas DataFrame 可以被看做是加强版的矩阵,它自带数据分析函数,并且允许不同的列包含不同的数据类型。

可以通过变量 donations 的 shape 属性来打印它多少行多少列。每个区块的最后一行语句或变量都会自动显示,这个功能超赞!下一个区块用了 DataFrames 的 head() 函数打印出了变量 donations 的头两行,这样就能看里面的数据了。

如想更深入地了解 Pandas 请参阅作者提供的 课程。

每个候选人收到的捐款总额

使用Pandas 中的 groupby() 函数能计算出每个候选人的整体统计数据。根据变量 cand_nm(候选人姓名)来把变量 donations 分成不同的子集就可以针对每个候选人分别统计数据。首先要算的是捐款总额。把候选人的 contb_receipt_amount 这一列加起来就可以得到收到的捐款总额了。

In [14]:
Python
1
donations.groupby(“cand_nm”).sum().sort(“contb_receipt_amt”)
Out[14]:
contb_receipt_amt file_num
cand_nm
Pataki, George E. 365090.98 234695430
Webb, James Henry Jr. 398717.25 709419893
Lessig, Lawrence 621494.50 1378488449
Santorum, Richard J. 781401.03 822086638
Trump, Donald J. 1009730.97 2357347570
Jindal, Bobby 1013918.12 584896776
Perry, James R. (Rick) 1120362.59 925732125
Huckabee, Mike 1895549.15 2700810255
O’Malley, Martin Joseph 2921991.65 2664148850
Graham, Lindsey O. 2932402.63 3131180533
Kasich, John R. 3734242.12 2669944682
Christie, Christopher J. 3976329.13 2421473376
Paul, Rand 4376828.14 16056604577
Fiorina, Carly 4505707.06 12599637777
Walker, Scott 4654810.30 5636746962
Sanders, Bernard 9018526.00 71139864714
Rubio, Marco 10746283.24 22730139555
Carson, Benjamin S. 11746359.74 75613624360
Cruz, Rafael Edward ‘Ted’ 17008622.17 69375616591
Bush, Jeb 23243472.85 14946097673
Clinton, Hillary Rodham 61726374.09 86560202290
上面的代码首先用donations.groupby(“cand_nm”) 根据cand_nm 把donations 分成了不同的组。这个语句返回的是 GroupBy 对象,GroupBy 类型自带一些专门用来整合数据的函数。其中就包含sum() 函数,在这个问题中可以用来计算每组中每一列中数据的和。

Pandas 在读取数据的时候就会自动识别每一列的数据类型,在进行求和时只会针对数字类型的列来操作。这样就得到了一个包含每个候选人contb_receipt_amt列中所有数字之和及file_num 列中所有数字之和的 DataFrame。最后使用 DataFrames 中的 sort() 函数将contb_receipt_amt 的和从小到大排序。这样就得到了每个候选人收到的捐款总额。

将捐款总额可视化

Python 中最主要的可视化包就是 matplotlib,可以用它来画图。Jupyter notebook 能够在浏览器中直接渲染 matplotlib 的图表。这个功能需要通过激活 matplotlib 的 inline 模式来开启。可以利用 Jupyter magics 中的命令来激活它就能直接在 notebook 中看图表了。

Magics 就是以 % 或者 %% 开头的、能改变 Jupyter notebook 本身的命令。它们是为了让能够通过命令行改变 Jupyter 的设置,同时尽量不与 Python 代码混淆而存在的。要想在浏览器里直接看 matplotlib 的图表,需要在代码区块里运行 %matplotlib inline。更多关于用 Jupyter 画图的内容可以 在此 阅读。

用下面的代码来导入 matplotlib 库并且开启 inline 模式:

In [15]:
Python
1
2
3
import matplotlib.pyplot as plt

%matplotlib inline
Pandas 中的 DataFrames 自带对可视化的支持,调用 plot() 函数就可以生成 matplotlib图表。这么用一般会比调用 matplotlib 更方便快捷。先给之前的 DataFrame 赋值给一个变量 total_donations,再利用 indexing 来选择 DataFrame 中的一列: contb_receipt_amt。这样就生成了一个 Pandas 中的 Series 类型的变量。

Pandas 中的 Series 和 DataFrames 包含的函数都差不多,但是 Series 只能存一维数据,比如单一行或者单一列。调用 Series 的 plot() 函数就生成了一个显示每个候选人收到的捐款总额的柱状图。

In [16]:
Python
1
total_donations = donations.groupby(“cand_nm”).sum().sort(“contb_receipt_amt”)
In [20]:
Python
1
total_donations[“contb_receipt_amt”].plot(kind=”bar”)
Out[20]:
1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哪些钱借了可以不还?

借钱竟然可以不还?这个估计很多人都不知道,但是在实际民间借贷中,确实是有一些借贷关系是不受法律保护的,那哪些债务还是不受法律保护的呢?(一)借款用于非法用途案例:任某在生意场上…

模块说明(四)

模块说明(四) 比较模块 判断一个矩阵是否为一个奇异矩阵,看其行列式是否为0 位设置与清零模块 位运算模块 按位运算 位提取、位移运算模块 检测模块 表查询库 表查询模块

C++等级考试知识点总结

第一章 C语言概述C是一种面向对象的程序设计语言抽象数据类型封装和信息隐藏以继承和派生方式实现程序的重用以运算符重载和虚函数来实现多态性以模板来实现类型的参数化 C是C语言的超集C继承了C语言简明、高效、灵活等众多优点以前使用C语言编写的大批软件可以不加任何修改&am…

reverse string

https://leetcode.com/problems/reverse-string/ Write a function that takes a string as input and returns the string reversed. Example: Given s “hello”, return “olleh”. 1. char* reverseString(char* s) {int i 0;int j strlen(s) - 1;while(i < j) …

PID控制器_Matlab/Simulink仿真

PID控制器_Matlab/Simulink仿真 Kp:比例增益;Kpe:当前误差 KI:积分增益;KI∫edt:过去误差,累计 KD:微分增益;KD*de/dt:变换趋势 PD控制是增加了一个零点 例子: simulink操作

银行停贷、涨息、排队,8月不贷只能等明年

这几天做贷款的朋友圈被这种消息刷屏了没&#xff1f;据深圳商报报道&#xff0c;目前深圳一些大银行已经出现了贷款资金余额不足的情况&#xff0c;甚至有的银行已经停止信用贷款的发放&#xff1b;业内人士认为&#xff0c;信贷额度紧张局面估计持续到年底。除了深圳&#xf…

如何快速把借呗额度提高到10万?

借呗是一个很好的贷款工具&#xff0c;快&#xff0c;简&#xff0c;省等优点深得广大网友的喜爱。但是借呗虽然好用&#xff0c;却受限于额度&#xff0c;很多人的额度都是在3万以内&#xff0c;能超过10万的毕竟是少数人&#xff0c;看到别人几十万的额度&#xff0c;你是不是…

Simulink模糊控制入门

Simulink模糊控制入门 第一步:在命令窗口输入 fuzzy 在命令窗口输入 :doc Implement Fuzzy PID Controller in Simulink Using Lookup Table可以找到模糊控制说明的文档 另一种设置隶属函数的方式(建议):先删除所有的FMs在添加7个就行

sum of two integers

https://leetcode.com/problems/sum-of-two-integers/ Calculate the sum of two integers a and b, but you are not allowed to use the operator and -. Example: Given a 1 and b 2, return 3. 注释&#xff0c;这个题目有意思&#xff0c;学过FPGA的人都知道最基本…

监管升级,央行变相加息,贷款难还在继续

近段看到很多有贷款需求的朋友已经排队很久了&#xff0c;但是贷款还是没有着落&#xff0c;而还在观望的朋友&#xff0c;对不起&#xff0c;可能贷款没你的份了&#xff0c;因为监管正在升级&#xff0c;说白了就是央行变相加息&#xff0c;让贷款更难。银行同业存单纳入MPA考…

集成运放笔记

集成运放笔记 1 电压传输特性 开环 u0A0d(Up-Un) 线性区 阻容耦合无法集成 电流源电路 比例电流源 微电源 以电流源为有源负载的放大电路 共射放大电路 放大电路中的反馈 基本概念和判断 反馈&#xff1a;输出量影响输入量 正反馈&#xff1a;增强了净输入量 负反馈&a…

网络技术等级考试知识点

第一章 网络系统结构与设计的基本原则第二章 中小型网络系统总体规划与设计方法第三章 IP地址规划设计技术第四章 路由设计基础第五章 局域网技术第六章 交换机及其配置第七章 路由器及其配置第八章 无线局域网设备安装与调试第九章 计算机网络新型服务系统的安装与配置第十章 …

音频特征域方法

特征域方法摘自&#xff1a;严勤 吕勇著《语音信号处理与识别》 特征域方法可分为鲁棒特征提取 和 特征补偿两个子类。 鲁棒特征提取&#xff1a;致力于寻找更加稳健的声学特征&#xff0c;这些特征受语音变异性的影响较小&#xff0c;因此测试集和训练集的声学特征可以保持较高…

linu的安装

linu的安装 基本说明 学习Linux需要一个环境&#xff0c;我们需要创建一个虚拟机&#xff0c;然后在虚拟机上安装一个Centos系统来学习。 1.先安装virtual machine 15.5 再安装Linux(CentOS 7.6/centOS8.1) 3.原理示意图 vmware15.5下载 VM安装的步骤 使用迅雷下载 …

Maximum Depth of Binary Tree

https://leetcode.com/problems/maximum-depth-of-binary-tree/ Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. 求给定二叉树的最大的深度&#xff…

MATLAB工具常用函数

简介MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。使用 MATLAB&#xff0c;可以较使用传统的编程语言&#xff08;如 C、C 和 Fortran&#xff09;更快地解决技术计算问题。 应用范围&#xff1a;包括信号和图像处理、通讯、控…

MATLAB求音频信号特征的自定义函数.md

分帧和分窗处理&#xff1a;对信号x加窗分帧处理 1234567wlen50; % 帧长 inc18; % 帧移 winhanning(wlen); % 窗函数 fnfloor(((N-wlen)/inc))1; % 计算帧数 time(0:N-1)/F…

Invert Binary Tree

https://leetcode.com/problems/invert-binary-tree/ Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 给出一棵二叉树&#xff0c;求这棵二叉树的镜像。 搬运九章上的实现 http://www.jiuzhang.com/solutions/invert-binary-tre…

虚拟机快照

虚拟机快照 虚拟机的删除和迁移 虚拟机的克隆

这些人,建议你不要去贷款了

贷款是好事&#xff0c;但是贷款还不上就不是好事了&#xff0c;在实际的贷款中&#xff0c;有很多人贷款都是没有目的性&#xff0c;纯粹是为了获取贷款而贷款&#xff0c;如果你是下面这些人&#xff0c;建议不要去贷款了。第一种人&#xff0c;贷款投机的人所谓投机就是为了…