Statistics with Python Specialisation: 数据库、可视化方法

目录

    • 前言
    • Numpy Arrays (the ndarray)
      • 1. 导入 NumPy:
      • 2. 创建 NumPy 数组:
      • 3. 数组的基本属性:
      • 4. 访问数组元素:
      • 5. 数组切片:
      • 6. 数学运算:
    • pandas
  • 示例:用平均值填充缺失值
    • Scipy
    • MatPlotLib(画图)
  • Visualizing Data in Python

前言

个人感觉这门课有点难度,我自己真是0基础,之前没接触过Numpy和pandas那些,可以分享一些入门心得,熟练运用的话就是后话了。大家就在操作的时候现学吧,这样真的比较快和实用,不然太痛苦。

Jupiter Notebook

Jupyter Notebook 是一种开源的交互式计算和数据可视化的工具。它允许用户以笔记本形式编写和运行代码,支持多种编程语言,包括 Python、R 和 Julia 等。Jupyter Notebook 不仅可以包含代码,还可以包含富文本、图像、公式等元素,使其成为数据科学、机器学习和科学研究的理想工具。

通过 Jupyter Notebook,用户可以在浏览器中直接运行代码块,并实时查看结果。这种交互式的编程环境有助于快速实验和数据探索。Jupyter Notebook 本身是一个免费开源的软件,你可以在其官方网站上获取:Jupyter 官方网站。你可以在本地安装并运行 Jupyter Notebook。
Numpy
安装numpy 和 pandas
在终端下pip3 install,如果一直traceback 让你退出同源树,可以在终端卸载pip3 uninstall,之后再重装一遍。

Numpy Arrays (the ndarray)

NumPy数组由零起始的整数位置序列进行索引–也就是说,x[0]是1维数组x的第一个元素。
NumPy 是 Python 中用于科学计算的强大库,主要用于处理大型多维数组和矩阵,以及执行与数组相关的数学运算。以下是一些常见的 NumPy 语法和操作:

1. 导入 NumPy:

import numpy as np

通过这个语句,你可以使用 np 作为 NumPy 的别名,使得代码更加简洁。

2. 创建 NumPy 数组:

arr = np.array([1, 2, 3, 4, 5])

这会创建一个一维的 NumPy 数组。

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

这会创建一个二维的 NumPy 数组(矩阵)。
[[1 2 3]
[4 5 6]
[7 8 9]]

3. 数组的基本属性:

arr.shape  # 返回数组的形状,例如 (5,) 表示一维数组,(3, 3) 表示二维数组。(3行3列)
arr.dtype  # 返回数组元素的数据类型,例如 int64、float64。
arr.size   # 返回数组中元素的总数。

4. 访问数组元素:

arr[2]           # 访问一维数组的第三个元素。
matrix[1, 2]     # 访问二维数组的第二行第三列的元素。

5. 数组切片:

arr[1:4]         # 获取一维数组的第二到第四个元素。
matrix[:, 1:]    # 获取二维数组的所有行,从第二列开始。
import numpy as np
h = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print("h=\n", h)
### 选中前两行和第一列、第二列
i = h[:2, 1:3]
print("\ni=\n", i)

6. 数学运算:

np.sum(arr)      # 计算数组所有元素的和。
np.mean(arr)     # 计算数组所有元素的平均值。
np.max(arr)      # 找到数组中的最大值。
np.min(arr)      # 找到数组中的最小值。
np.dot(matrix1, matrix2)  # 矩阵乘法。

这只是 NumPy 的一小部分功能和语法。NumPy 提供了丰富的功能,适用于数组的数学运算、统计、线性代数等领域。你可以参考 NumPy 官方文档以获取更详细的信息:NumPy 官方文档。

pandas

获取csv文件要下载插件,系统会提示。
Pandas 是一个用于数据分析和处理的 Python 库。它提供了一种称为 DataFrame 的数据结构,使得数据的操作更加方便。以下是一些 Pandas 的基本语法和常用操作:

  1. 导入 Pandas 库:

    import pandas as pd
    
  2. 创建 DataFrame:

    # 从列表创建
    df = pd.DataFrame([['Alice', 25], ['Bob', 30], ['Charlie', 35]], columns=['Name', 'Age'])# 从字典创建
    data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
    df = pd.DataFrame(data)
    
  3. 读取和写入数据:

    # 读取 CSV 文件
    df = pd.read_csv('filename.csv')# 写入 CSV 文件
    df.to_csv('output.csv', index=False)
    
  4. 查看数据:

    # 查看前几行
    df.head()# 查看统计信息
    df.describe()
    
  5. 选择和过滤数据:

    # 选择列
    df['Name']# 选择多列
    df[['Name', 'Age']]# 根据条件过滤数据
    df[df['Age'] > 30]
    
  6. 新增和删除列:

    # 新增列
    df['New_Column'] = [1, 2, 3]# 删除列
    df.drop('New_Column', axis=1, inplace=True)
    
  7. 数据排序:

    # 按列排序
    df.sort_values(by='Age', ascending=False)
    
  8. 处理缺失值:

    # 检查缺失值
    df.isnull()# 删除含有缺失值的行
    df.dropna()# 填充缺失值
    df.fillna(value)
    

示例:用平均值填充缺失值

mean_age = df['Age'].mean()
df_filled = df.fillna(mean_age)

这些方法返回处理后的新 DataFrame,不会改变原始 DataFrame,除非你使用 inplace=True 参数。

Scipy

# The median of a standard Student's t distribution with 10 degrees of freedom
print(stats.t(10).ppf(0.5))# The 97.5 percentile of a standard Student's t distribution with 5 degrees of freedom
print(stats.t(5).ppf(0.975))# The probability that a standard normal value is less than or equal to 3
print(stats.expon.cdf(3))# The height of the standard normal density function at 1
print(stats.norm.pdf(1))# The probability of getting exactly 3 heads in 10 flips of a fair coin
print(stats.binom(10, 0.5).pmf(3))# The probability of getting 3 or fewer heads in 10 flips of a fair coin
print(stats.binom(10, 0.5).cdf(3))
  1. CDF - Cumulative Distribution Function(累积分布函数):

    • 定义: 对于一个随机变量 X,它的 CDF 是一个函数 F(x),定义为 P(X ≤ x),表示随机变量小于或等于 x 的概率。
    • 数学表示: F(x) = P(X ≤ x)
    • 性质: CDF 是单调非减的,总是在 [0, 1] 范围内,并且在 x 增加时不减小。
      在代码中,对于二项分布 binombinom.cdf(k, n, p) 成功次数不超过 k 的概率。
  2. PDF - Probability Density Function(概率密度函数):

    • 定义: 对于连续型随机变量 X,PDF 是一个函数 f(x),表示在给定点 x 处的概率密度,即 X 在 x 处的概率密度。
    • 性质: PDF 的值并不直接对应概率,而是在给定范围内的概率密度。总体积分为 1。

MatPlotLib(画图)

plt.grid(True)
plt.plot(x, y, ":", lw=5, color="orange") #lw=线条宽度
plt.ylabel("Y", size=15)
plt.xlabel("X", size=15)

Matplotlib 是一个用于绘制图表和数据可视化的 Python 库。它提供了广泛的绘图功能,可以创建各种类型的图表,包括线图、散点图、柱状图、饼图、等高线图等。Matplotlib 是一个功能强大且灵活的工具,广泛应用于数据分析、科学计算、机器学习等领域。

  1. 绘图接口:

    • pyplot 模块是 Matplotlib 的绘图接口,它提供了类似于 MATLAB 的绘图功能。通常使用 import matplotlib.pyplot as plt 的方式引入。
  2. 基本绘图:

    • 使用 plt.plot(x, y) 可以绘制线图,其中 xy 是数据点的坐标。
  3. 样式和颜色:

    • 可以通过参数设置线条样式、颜色、标记等。例如,plt.plot(x, y, linestyle='--', color='blue', marker='o')
  4. 图表类型:

    • Matplotlib 支持绘制多种类型的图表,包括散点图、柱状图、饼图等。
  5. 标签和标题:

    • 使用 plt.xlabel(), plt.ylabel(), plt.title() 可以设置坐标轴标签和图表标题。
  6. 图例:

    • 使用 plt.legend() 可以添加图例,说明每条线或每个数据集的含义。
  7. 坐标轴和刻度:

    • 可以通过 plt.xlim(), plt.ylim(), plt.xticks(), plt.yticks() 来设置坐标轴范围和刻度。
  8. 图形保存:

    • 使用 plt.savefig() 可以将绘制的图形保存为图片文件。

Matplotlib 提供了丰富的文档和示例,可以帮助用户更好地理解和使用该库。可以在 Matplotlib 官方网站 上找到详细的文档和示例。

##Seaborn 简化数据可视化过程

  1. hue 参数通常用于在图表中加入额外的分组变量,从而使得更多维度的信息得以展示。

  2. scatterplot散点图

import seaborn as sns
import matplotlib.pyplot as plt# 示例使用 sns.scatterplot
sns.scatterplot(x='x', y='y', hue='group', data=df)
plt.show()

上述代码中,xy 是数据框 df 中的列名,而 hue 是指定的分组变量。这将生成一个散点图,其中不同颜色表示不同的分组。

  1. swarmplot 蜂群图
    它用于绘制分类散点图,其中点不会重叠,以更好地显示分布。示例代码如下:
# 示例使用 sns.swarmplot
sns.swarmplot(x='x', y='y', hue='group', data=df)
plt.show()

这将生成一个散点图,其中不同颜色表示不同的分组,并使用 swarmplot 的布局,避免了点的重叠。

  1. 轴网格可以通过 Matplotlib 的 plt.grid(True) 来添加,或者通过 Seaborn 的 sns.set(style="whitegrid") 来设置整个图表的样式为带网格的白色背景。
# 示例使用 plt.grid(True) 来添加轴网格
sns.scatterplot(x='x', y='y', hue='group', data=df)
plt.grid(True)
plt.show()
  1. 直方图Histogram
sns.displot(df.某列)
sns.displot(df.CWDistance, kde=True, bins=20)

kde=False 来禁用核密度估计

Visualizing Data in Python

tips_data = sns.load_dataset("tips")
tips_data.head()
tips_data.describe() #Summary statistics
  • including the mean, minimum, and maximum of the data, can be useful to get a feel for the central tendency and dispersion of each variable.

sns.histplot(tips_data[" “], kde = False).set_title(” ");

sns.boxplot(x=tips_data["tip"]).set_title("Box plot of the Tip")
plt.show()
da["BMXWT"].dropna().describe()  #生成摘要之前先删除missing cases

举例:NHANES data
· print(np.mean(da.BPXDI1 - da.BPXDI2)) 计算差值平均值
·分层-清晰观看
da.groupby(“agegrp”)[“DMDEDUC2x”].value_counts()

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

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

相关文章

Elasticsearch:和 LIamaIndex 的集成

LlamaIndex 是一个数据框架,供 LLM 应用程序摄取、构建和访问私有或特定领域的数据。 LlamaIndex 是开源的,可用于构建各种应用程序。 在 GitHub 上查看该项目。 安装 在 Docker 上设置 Elasticsearch 使用以下 docker 命令启动单节点 Elasticsearch 实…

注解(Annotations)是什么?你用过哪些注解?解释依赖注入(DI)。

在编程语言中,注解(Annotation)是一种元数据机制,允许程序员向源代码中添加信息,这些信息可以被编译器、IDE或其他工具读取和处理,但不会影响程序的运行时行为。注解主要用于代码的自文档化、编译时检查、运…

chromedriver+Selenium+springboot+Java实现后端截图

chromedriver这种方法实现截图,依赖服务器端的谷歌浏览器软件,需要在服务器端下载谷歌浏览器。 Windows服务器说明 1.下载谷歌浏览器 2.根据第一步下载的谷歌浏览器版本,下载chromedriver,可以在这个页面找到和版本相近的版本去下…

docker部署Jira+配置MySQL8数据库

写在前面:如果你通过docker安装Jira且启动过,然后你现在又想使用mysql数据库,需要注意 你除了停掉原有容器,还需要删除:/var/lib/docker/volumes/jiraVolume/_data下的文件,否则启动后会无法正常使用。注意…

Redis 笔记一

概览 1.Redis核心数据存储结构 2.Redis底层String编码int&embstr&raw 3.Redis底层压缩列表&跳表&哈希表 4.Redis底层Zset实现压缩列表和跳表如何选择 5.基于Redis实现微博&抢红包&12306核心业务 辅助学习:Redis 教程 | 菜鸟教程 1.Redis为什…

ArcGIS初始化软件界面Normal.mxt

ArcGIS有时候永久了,或者呢突然不自觉软件界面乱了,或者一些窗口打开却找不到! 这时候可以去删除arcgis的界面配置文件,Normal.mxt 删除后再打开软件,软件界面就会回到初始化设置了! 文件所在的路径&…

从零开始学习Zeppelin:大数据可视化分析的交互式开发系统!

介绍:Apache Zeppelin是一个基于Web的交互式开发系统,主要用于进行大数据可视化分析。其核心概念是notebook,所有的操作都可以在notebook中完成。Zeppelin提供了一套非常全面的数据分析解决方案,支持数据采集、数据发现、数据分析…

网络安全应急响应灾备KB

目录 应急响应 定义 特点 国家相关标准和文件 事件分类与分级 应急响应组织 取证与保全 信息安全应急响应管理过程 灾备 关键词 灾备政策 灾备等级 灾备策略 受害恢复能力级别 灾难恢复管理过程 应急响应 定义: 指组织为了应对突发/重大信息安全管理…

canal server初始化源码分析

CanalLauncher类是canal server端启动的入口类,跟随代码进行深入。 在开始之前,我们可以先了解下, canal 配置方式 ManagerCanalInstanceGenerator: 基于manager管理的配置方式,实时感知配置并进行server重启Spring…

k8s---ingress对外服务(七层)

ingress 概念 k8s的对外服务,ingress service作用现在两个方面: 1、集群内部:不断跟踪的变化,更新endpoint中的pod对象,基于pod的ip地址不断变化的一种服务发现机制。 2、集群外部:类似于负载均衡器&a…

elasticsearch[二]-DSL查询语法:全文检索、精准查询(term/range)、地理坐标查询(矩阵、范围)、复合查询(相关性算法)、布尔查询

ES-DSL查询语法(全文检索、精准查询、地理坐标查询) 1.DSL查询文档 elasticsearch 的查询依然是基于 JSON 风格的 DSL 来实现的。 1.1.DSL 查询分类 Elasticsearch 提供了基于 JSON 的 DSL(Domain Specific Language)来定义查…

Python ddddocr 构建 exe 程序后运行报错:Failed Load model ... common_old.onnx

文章目录 ddddocr版本简单的 demo解决方案个人简介 ddddocr ddddocr是由sml2h3开发的专为验证码厂商进行对自家新版本验证码难易强度进行验证的一个python库,其由作者与kerlomz共同合作完成,通过大批量生成随机数据后进行深度网络训练,本身并…

qwen在vLLM下的长度外推简易方法

目的 在当前的版本vLLM中实现qwen的长度外推。 解决方法 在qwen的config.json中,增加如下内容: {"rope_scaling": { "type": "dynamic", "factor": 4.0} }dynamic:动态NTK factor:缩放因子,外推长…

虚拟环境中pip install不生效的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

R语言【base】:interactive():R语言是否在交互状态下运行?

Package base version 4.2.0 Usage interactive() Details 交互式的 R 会话是指有一个虚拟的操作手与 R 交互,比如 R 可以针对错误的输入提示更正,或者也可以询问接下来如何处理,或者认为这是可以的并且进行下一步。 GUI 控制台将安排在交…

宏集干货丨探索物联网HMI的端口转发和NAT功能

来源:宏集科技 工业物联网 宏集干货丨探索物联网HMI的端口转发和NAT功能 原文链接:https://mp.weixin.qq.com/s/zF2OqkiGnIME6sov55cGTQ 欢迎关注虹科,为您提供最新资讯! #工业自动化 #工业物联网 #HMI 前 言 端口转发和NAT功…

vue 里 props 类型为 Object 时设置 default: () => {} 返回的是 undefined 而不是 {}?

问题 今天遇到个小坑&#xff0c;就是 vue 里使用 props 传参类型为 Object 的时候设置 default: () > {} 报错&#xff0c;具体代码如下 <template><div class"pre-archive-info"><template v-if"infoData.kaimo ! null">{{ infoD…

ubuntu系统(10):使用samba共享linux主机中文件

目录 一、samba安装步骤 1、Linux主机端操作 &#xff08;1&#xff09;安装sabma &#xff08;2&#xff09;修改samba配置文件 &#xff08;3&#xff09;为user_name用户设置samba访问的密码 &#xff08;4&#xff09;重启samba服务 2、Windows端 二、使用 1、代码…

K8s(四)Pod资源——pod生命周期、重启策略、容器钩子与容器探测

目录 Pod生命周期 Pod重启策略 初始化容器 容器钩子 容器探测 启动探测 存活探测 就绪探测 参考资料 Pod 的生命周期 | Kubernetes Init 容器 | Kubernetes Pod的生命周期可以分为以下几个阶段&#xff1a; Pending&#xff08;等待&#xff09;&#xff1a;在这个…

Linux系统文件类型简介

Linux中的文件类型 在Linux系统中&#xff0c;每个文件都有一个文件类型&#xff0c;用于表示文件的种类。常见的文件类型包括: -&#xff1a; 普通文件&#xff1b; d&#xff1a; 目录文件&#xff1b; b&#xff1a; 块设备文件&#xff1b; c&#xff1a; 字符设备文件&a…