当前位置:首页 > 技术分析 > 正文内容

1 数据分析的基础(数据分析要点)

ruisui883个月前 (02-03)技术分析14

最近集中写了比较多的Python基础语法及基础知识,比较枯燥。最近同步开始了一个基于Python的数据分析的合计,将一些数据分析的理论以及本人的一些数据分析的经验与大家分享。

数据分析的对象

数据分析的对象主要指“结构化数据(structured data)”。

  • 关系表格:其中割裂可能是不同的数据类型(如:字符串、数值、日期等)。它们保存在关系型数据库或数据仓库以及用特殊符号(,、tab)进行分割的文件中。
  • 多维数组(矩阵)。
  • 通过关键列(在数据库或数据仓库中就是主键或外键)相联系鹅多个表。
  • 间隔平均或不平均的时间序列。

Python进行数据分析的重要库

  • NumPy:Python的科学计算基础包。提供如下功能:
    • 快速高效的多维数组对象ndarray。
    • 用于对数组执行元素级计算以及直接对数组执行数学运算的函数。
    • 用于读写硬盘上基于数组的数据集工具。
    • 线性代数运算、傅里叶变换以及随机数生成。
    • 成熟的C API,用于Python插件和原生C、C++、Fortran代码访问NumPy数据结构和计算工具。
    • 可以作为算法与各种库之间传递数据的容器。对于数值型数据,NumPy数组在存储和处理数据时要不内置的Python数据类型高效得多。C、C++、Fortran等语言编写的库可以直接操作NumPy数组中的数据,无需任何数据复制工作。
  • pandas:pandas的命名源于panel data(面板数据,多维结构化数据集)以及Python Data Analysis(Python数据分析)。提供便捷处理结构化数据的数据结构和函数。兼具NumPy高性能数组计算以及结构化表格灵活的数据处理功能。提供索引功能,能够便捷完成数据重塑、切片和切块、聚合以及选取数据子集等操作。pandas有如下常用的对象:
    • DataFrame对象是pandas使用最多的对象,它是面向列(column-oriented)的二维表结构。
    • Series对象,一个一维标签化数组对象。

pandas能够解决的问题:

NumPy和SciPy结合使用,形成了完备和成熟的计算平台,可以处理多种传统的科学计算问题。

  • scikit-learn:2010年诞生。Python的通用机器学习工具包。包括如下模块:
    • 分了:SVM、近邻、随机森林、逻辑回归等。
    • 回归:Lasso、岭回归等。
    • 聚类:k-means、谱聚类等。
    • 降维:PCA、特征选择、矩阵分解等。
    • 选型:网络搜素、交叉验证、度量。
    • 预处理:特征提取、标准化。
  • statsmodels:统计分析包。在R语言的statsmodels项目的启发下,Python创建了Patsy项目,提供statsmodels的公式或模型的规范框架。与scikit-learn比较,statsmodels包含经典统计学和经济计量学算法,包括模块:
    • 回归模型:线性回归,广义线性模型,健壮线性模型,线性混合效应模型等。
    • 方差分析(ANOVA)。
    • 时间序列分析:AR、ARMA、ARIMA、VAR和其他模型。
    • 非参数方法:核密度分析,核回归。
    • 统计模型结果可视化。

statsmodels关注与统计推断,提供不确定估计和参数-p值。相反,scikit-learn注重预测。

Python的工具

IPython

在windows下,cmd窗口内输入ipython,进入ipython控制台。可以逐行输入python语句进行互动。

Python 3.12.4 | packaged by Anaconda, Inc. | (main, Jun 18 2024, 15:03:56) [MSC v.1929 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.25.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: a = 5

In [2]: b = 4

In [3]: a + b
Out[3]: 9

In [4]: from numpy.random import randn

In [5]: data = { i : randn() for i in range(8)}

In [6]: print(data)
{0: -0.36211844228525636, 1: 0.65355675528418, 2: 0.2642507439725111, 3: 0.476844772702203, 4: -0.5354597385357329, 5: -1.604694764965634, 6: -0.12914256026838486, 7: 1.1193414079149966}

Jupyter Notebook

在windows下,cmd窗口内输入jupyter notebook,则在控制台中显示命令。

之后直接打开系统默认的浏览器,弹出:

http://localhost:8888/tree? or http://localhost:8888

在Running页签中选择一个.ipynb进行人机交互。如果之前没有.ipynb,可以在File菜单中创建Notebook进行交互。

选择.ipynb进行交互。

Notebook常用的一些技巧:

  • 输入命令后,点击shift+enter进行执行。
  • tab补全:输入少量字母后,点击tab,IPython shell会搜素已输入变量(对象、函数等)的命名空间。
  • 自省:在方法名(不需要加括号)、变量后加?IPython会返回相关描述。
  • 加??会返回源码。下图展示了?与??的区别。
  • 可以搜索命名空间。如下面的代码,搜索NumPy下所有包含load的命名空间。
  • Ctrl+C:中断正在运行中的代码。
  • 常用快捷键。Jupyter Notebook的快捷键,可能受浏览器热键的影响。测试通过的只有下述两个。

快捷键

说明

Ctrl+ ↑

从当前输入的文本框上移到上一个文本框

Ctrl+ ↓

从当前输入的文本框上移到下一个文本框

以下是一些Notebook或IPython中常用的魔术方法。所谓魔术方法是一些使用%开头的指令。

  • %timeit:测量任何Python语句的执行时间。
  • %pwd:查看Notebook所处的位置。

可以执行dos命令,进行目录切换。

  • %run:运行.py程序。

在当前目录下,创建python_run_test.py文件。其中输入内容:

def f(x, y, z):
    return (x + y) / z

a = 5
b = 6
c = 7.5
result = f(a, b, c)

执行%run python_run_test.py命令运行.py程序。之后直接可以通过交互访问.py脚本中的变量与结果。

  • %load:加载源代码。
  • 魔术方法汇总

命令

说明

%quickref

显示 IPython 的快速参考。

%magic

显示所有魔术命令的详细文档。

%debug

在出现异常的语句进入调试模式。

%hist

打印命令的输入(可以选择输出)历史。

%pdb

出现异常时自动进入调试。

%paste

%cpaste

执行剪贴板中的代码。

开启特别提示,手动粘贴待执行代码。 经测试IPython可用,Notebook不可用。

%reset

删除所有命名空间中的变量和名字。

%page OBJECT

美化打印对象,分页显示。

%run script.py

运行代码。

%prun statement

用 CProfile 运行代码,并报告分析器输出。

%time statement

报告单条语句的执行时间。

%timeit statement

多次运行一条语句,计算平均执行时间。适合执行时间短的代码。

%who,%who ls,%whos

显示命名空间中的变量,三者显示的信息级别不同。

%xdel variable

删除一个变量,并清空任何对它的引用。

  • matplotlib inline:初始化绘图窗口。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1363.html

标签: pageobject
分享给朋友:

“1 数据分析的基础(数据分析要点)” 的相关文章

如何在GitLab上回退指定版本的代码?GitLab回退指定版本问题分析

在Git中,回退到指定版本并不是删除或撤销之前的提交,而是创建一个新的提交,该提交包含指定版本的内容。这意味着您需要将当前代码更改与指定版本之间的差异进行比较,并将其合并到一个新的提交中。如果您没有更新本地代码,并且您希望将 GitLab 仓库回退到指定版本,您可以使用以下命令:git fetchg...

「Git迁移」三行命令迁移Git包含提交历史,分支,tag标签等信息

问题描述:公司需要将一个git远程服务器的全部已有项目迁移到一台新服务器的Gitlab中,其中需要包含全部的提交纪录,已有的全部分支与全部打tag标签,目前此工作已全部迁移完毕,特此记录一下操作步骤环境描述:1. 要迁移的远程Git:Gitblit2. 迁移目的Git:Gitlab3. 暂存代码的P...

理解virt、res、shr之间的关系(linux系统篇)

前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。...

K8S NFS 共享存储

NFS 共享存储前面我们学习了 hostPath 与 Local PV 两种本地存储方式,但是平时我们的应用更多的是无状态服务,可能会同时发布在不同的节点上,这个时候本地存储就不适用了,往往就需要使用到共享存储了,比如最简单常用的网络共享存储 NFS,本节课我们就来介绍下如何在 Kubernetes...

全新斯柯达柯珞克Karoq深度评测:大众替代品

“斯柯达柯珞克是一款出色的全能家庭 SUV,具有许多有用的功能”价格36,605 英镑- 49,190 英镑优点方便的 VarioFlex 后排座椅非常适合家庭入住驾驶乐趣缺点保修期短保守的内饰性格比Yeti少结论——斯柯达柯珞克是一辆好车吗?斯柯达柯珞克是在辉煌的七座 斯柯达柯迪亚克之后推出的,因...

Vue真是太好了 壹万多字的Vue知识点 超详细!

1??、Vue和其他两大框架的区别Angular 学习成本太高React 代码可读性差Vue 学习成本较低 很容易上手VUE官方: https://cn.vuejs.org/v2/guide/comparison.html?2??、Vue是什么Vue是一套用于构建用户界面的渐进式框架 "前端...