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

本文介绍了如何使用Python的Numpy和Pandas库处理数据,包括数组操作、创建DataFrame、数学运算,以及如何使用JupyterNotebook进行交互式编程和数据可视化,如Matplotlib和Scipy中的统计分析和绘图功能。
摘要由CSDN通过智能技术生成

前言

个人感觉这门课有点难度,我自己真是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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值