个人感觉这门课有点难度,我自己真是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数组由零起始的整数位置序列进行索引–也就是说,x[0]是1维数组x的第一个元素。
NumPy 是 Python 中用于科学计算的强大库,主要用于处理大型多维数组和矩阵,以及执行与数组相关的数学运算。以下是一些常见的 NumPy 语法和操作:
import numpy as np
通过这个语句,你可以使用 np
作为 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]]
arr.shape # 返回数组的形状,例如 (5,) 表示一维数组,(3, 3) 表示二维数组。(3行3列)
arr.dtype # 返回数组元素的数据类型,例如 int64、float64。
arr.size # 返回数组中元素的总数。
arr[2] # 访问一维数组的第三个元素。
matrix[1, 2] # 访问二维数组的第二行第三列的元素。
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)
np.sum(arr) # 计算数组所有元素的和。
np.mean(arr) # 计算数组所有元素的平均值。
np.max(arr) # 找到数组中的最大值。
np.min(arr) # 找到数组中的最小值。
np.dot(matrix1, matrix2) # 矩阵乘法。
这只是 NumPy 的一小部分功能和语法。NumPy 提供了丰富的功能,适用于数组的数学运算、统计、线性代数等领域。你可以参考 NumPy 官方文档以获取更详细的信息:NumPy 官方文档。
获取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 参数。
# 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(累积分布函数):
binom
,binom.cdf(k, n, p)
成功次数不超过 k 的概率。PDF - Probability Density Function(概率密度函数):
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')
。图表类型:
标签和标题:
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 的布局,避免了点的重叠。
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()
sns.displot(df.某列)
sns.displot(df.CWDistance, kde=True, bins=20)
kde=False 来禁用核密度估计
tips_data = sns.load_dataset("tips")
tips_data.head()
tips_data.describe()
#Summary statistics
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()