目录
前言
个人感觉这门课有点难度,我自己真是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 的基本语法和常用操作:
-
导入 Pandas 库:
import pandas as pd
-
创建 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)
-
读取和写入数据:
# 读取 CSV 文件 df = pd.read_csv('filename.csv') # 写入 CSV 文件 df.to_csv('output.csv', index=False)
-
查看数据:
# 查看前几行 df.head() # 查看统计信息 df.describe()
-
选择和过滤数据:
# 选择列 df['Name'] # 选择多列 df[['Name', 'Age']] # 根据条件过滤数据 df[df['Age'] > 30]
-
新增和删除列:
# 新增列 df['New_Column'] = [1, 2, 3] # 删除列 df.drop('New_Column', axis=1, inplace=True)
-
数据排序:
# 按列排序 df.sort_values(by='Age', ascending=False)
-
处理缺失值:
# 检查缺失值 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))
-
CDF - Cumulative Distribution Function(累积分布函数):
- 定义: 对于一个随机变量 X,它的 CDF 是一个函数 F(x),定义为 P(X ≤ x),表示随机变量小于或等于 x 的概率。
- 数学表示: F(x) = P(X ≤ x)
- 性质: CDF 是单调非减的,总是在 [0, 1] 范围内,并且在 x 增加时不减小。
在代码中,对于二项分布binom
,binom.cdf(k, n, p)
成功次数不超过 k 的概率。
-
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 是一个功能强大且灵活的工具,广泛应用于数据分析、科学计算、机器学习等领域。
-
绘图接口:
pyplot
模块是 Matplotlib 的绘图接口,它提供了类似于 MATLAB 的绘图功能。通常使用import matplotlib.pyplot as plt
的方式引入。
-
基本绘图:
- 使用
plt.plot(x, y)
可以绘制线图,其中x
和y
是数据点的坐标。
- 使用
-
样式和颜色:
- 可以通过参数设置线条样式、颜色、标记等。例如,
plt.plot(x, y, linestyle='--', color='blue', marker='o')
。
- 可以通过参数设置线条样式、颜色、标记等。例如,
-
图表类型:
- Matplotlib 支持绘制多种类型的图表,包括散点图、柱状图、饼图等。
-
标签和标题:
- 使用
plt.xlabel()
,plt.ylabel()
,plt.title()
可以设置坐标轴标签和图表标题。
- 使用
-
图例:
- 使用
plt.legend()
可以添加图例,说明每条线或每个数据集的含义。
- 使用
-
坐标轴和刻度:
- 可以通过
plt.xlim()
,plt.ylim()
,plt.xticks()
,plt.yticks()
来设置坐标轴范围和刻度。
- 可以通过
-
图形保存:
- 使用
plt.savefig()
可以将绘制的图形保存为图片文件。
- 使用
Matplotlib 提供了丰富的文档和示例,可以帮助用户更好地理解和使用该库。可以在 Matplotlib 官方网站 上找到详细的文档和示例。
##Seaborn 简化数据可视化过程
-
hue
参数通常用于在图表中加入额外的分组变量,从而使得更多维度的信息得以展示。 -
scatterplot
散点图
import seaborn as sns
import matplotlib.pyplot as plt
# 示例使用 sns.scatterplot
sns.scatterplot(x='x', y='y', hue='group', data=df)
plt.show()
上述代码中,x
和 y
是数据框 df
中的列名,而 hue
是指定的分组变量。这将生成一个散点图,其中不同颜色表示不同的分组。
swarmplot
蜂群图
它用于绘制分类散点图,其中点不会重叠,以更好地显示分布。示例代码如下:
# 示例使用 sns.swarmplot
sns.swarmplot(x='x', y='y', hue='group', data=df)
plt.show()
这将生成一个散点图,其中不同颜色表示不同的分组,并使用 swarmplot 的布局,避免了点的重叠。
- 轴网格可以通过 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()
- 直方图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()