news 2026/8/5 15:05:03

Python数据分析期末复习:Numpy、Pandas与Matplotlib核心要点精讲

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python数据分析期末复习:Numpy、Pandas与Matplotlib核心要点精讲

1. 项目概述:为什么期末复习需要一份“归纳”?

又到期末了,如果你是计算机、统计、金融或者任何和数据沾边的专业,大概率逃不掉一门叫“Python数据分析”的课。这门课的特点就是:知识点零散、库多、函数杂,平时写作业调包调得飞起,一到考试就发现连DataFrame的索引是iloc还是loc都记混了。我当年也这么过来的,所以特别理解大家考前那种“好像都会,又好像都不会”的焦虑感。

这份“期末复习归纳”,不是给你一本全新的教材,而是帮你把一学期学过的、最核心、最高频、最容易混淆的知识点,像整理房间一样,分门别类地归置好。它的核心价值在于“提纯”和“串联”。提纯,是过滤掉那些不常用的细枝末节,只留下考试和实际项目中最可能用到的“硬通货”;串联,是把Numpypandasmatplotlib这几个看似独立的库,通过一个数据分析的完整流程(数据加载、清洗、探索、可视化)给串起来,让你明白它们各自在哪个环节发挥作用,而不是孤立地记忆。

简单说,这份归纳适合两类人:一是正在备考,急需一份高效复习提纲的同学;二是学完一遍感觉知识点像一盘散沙,想重新建立知识体系的朋友。我会用最直白的“人话”,结合我踩过的坑和项目里的实际经验,带你快速过一遍重点。咱们的目标不是面面俱到,而是用最短的时间,拿到最关键的分数,并建立起能用于实战的认知框架。

2. 核心基石:Numpy的数组世界与高效计算

数据分析的所有高级操作,底层几乎都离不开高效的数值计算,这就是Numpy的舞台。别被它“科学计算库”的名头吓到,期末考和日常用,你只需要抓住几个核心概念。

2.1 数组创建、索引与形状操作

Numpy的核心是ndarray(N维数组)。它和Python原生列表最大的区别在于:同质(所有元素类型相同)和高效(底层用C实现)。创建数组最常用的就几个函数:

import numpy as np # 从列表创建 arr1 = np.array([1, 2, 3, 4]) # 创建特殊数组 zeros_arr = np.zeros((3, 4)) # 3行4列的全0数组 ones_arr = np.ones((2, 2)) range_arr = np.arange(0, 10, 2) # 类似range,但生成数组 linspace_arr = np.linspace(0, 1, 5) # 0到1之间均匀取5个数

这里有个实操心得np.arangenp.linspace经常搞混。记住,arange是给定start, stop, step,像rangelinspace是给定start, stop, num(元素个数),它帮你均匀分。画坐标轴刻度时,linspace更常用。

索引和切片是操作数组的命脉,和列表类似,但功能更强,尤其是“布尔索引”和“花式索引”。

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 普通索引和切片 print(arr[0, 1]) # 2 print(arr[1:, :2]) # 第二行开始,所有行的前两列 -> [[4,5], [7,8]] # 布尔索引(极其重要!) mask = arr > 5 print(arr[mask]) # 输出所有大于5的元素 -> [6, 7, 8, 9] # 花式索引 print(arr[[0, 2], [0, 1]]) # 取(0,0)和(2,1)位置的值 -> [1, 8]

重要注意事项Numpy的切片返回的是“视图”(view),而不是副本(copy)。这意味着如果你修改了切片,原始数组也会被修改!这既是优点(节省内存),也是坑。如果不想影响原数组,记得用.copy()方法显式复制。

形状操作是另一大重点。.reshape.resize.flatten.T(转置)这些方法必须熟练。

arr = np.arange(12) reshaped = arr.reshape(3, 4) # 改为3行4列,元素总数必须匹配 flattened = reshaped.flatten() # 展平为一维 transposed = reshaped.T # 转置,行变列

常见问题reshape不改变原数组,返回新数组;resize则直接修改原数组形状,如果新形状元素更多,会填充0(或重复原数组)。考试常考reshape(-1, 1)reshape(1, -1)的用法,-1代表自动计算该维度长度,用于将一维数组转为列向量或行向量,在机器学习特征处理中非常常见。

2.2 通用函数、广播机制与聚合计算

Numpy的通用函数(ufunc)是对数组进行元素级运算的快速函数。比如np.sqrt(arr)np.exp(arr)np.sin(arr)。它们比用Python循环快几个数量级。

广播(Broadcasting)是Numpy最强大也最容易出错的概念之一。它的核心规则是:当两个数组形状不同时,Numpy会尝试通过扩展维度或复制数据,使它们形状兼容,从而进行元素级运算。规则可以简化为:

  1. 从尾部维度开始对齐。
  2. 维度大小为1的轴可以被扩展为对方对应维度的大小。
  3. 如果某个维度缺失,可以视为1。
# 经典例子 A = np.array([[1, 2, 3], [4, 5, 6]]) # 形状 (2, 3) B = np.array([10, 20, 30]) # 形状 (3,) # B被广播为 [[10,20,30], [10,20,30]],形状变为(2,3),然后与A相加 C = A + B # 结果:[[11,22,33], [14,25,36]]

避坑技巧:当你对广播结果不确定时,一个笨但有效的方法是,在脑子里或纸上把两个数组的形状写出来,从右向左对齐,然后逐条套用广播规则。多练几个例子,感觉就来了。

聚合计算是数据分析的汇总统计,Numpy提供了summeanstd(标准差)、var(方差)、minmaxargmin(最小值索引)、argmax(最大值索引)等函数。关键是要掌握axis参数。

arr = np.array([[1, 2], [3, 4], [5, 6]]) print(arr.sum()) # 所有元素和 -> 21 print(arr.sum(axis=0)) # 沿第0轴(行)压缩,计算每列的和 -> [9, 12] print(arr.sum(axis=1)) # 沿第1轴(列)压缩,计算每行的和 -> [3, 7, 11]

记忆口诀axis=0就是“沿着行的方向往下压”,行没了,剩下列,所以是跨行计算(列方向)。axis=1反之。pandas里也沿用这个逻辑。

3. 数据操纵核心:pandas的DataFrame与Series

如果说Numpy是高效的“发动机”,那pandas就是舒适的“驾驶舱”。它提供了Series(一维带标签数组)和DataFrame(二维表格,可视为Series的字典)这两种核心数据结构,让数据操作变得直观。

3.1 数据结构、数据读写与查看

Series可以看作一个带索引的字典。DataFrame是多个共享同一个索引的Series的集合。

import pandas as pd # 创建Series s = pd.Series([1, 3, 5, np.nan, 6], index=['a', 'b', 'c', 'd', 'e']) # 创建DataFrame df = pd.DataFrame({ '姓名': ['张三', '李四', '王五'], '年龄': [20, 21, 19], '成绩': [88.5, 92.0, 85.0] }, index=['S001', 'S002', 'S003']) # 可以指定行索引

数据读写是第一步。最常用的是read_csvto_csv

# 读取 df = pd.read_csv('data.csv', encoding='utf-8') # 注意编码问题 # 读取Excel df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1') # 写入 df.to_csv('output.csv', index=False) # 通常不保存行索引

常见问题与排查

  1. read_csv报编码错误:尝试encoding='gbk''gb2312''utf-8-sig'。用chardet库检测文件编码是个好习惯。
  2. 读取时列名有空格或奇怪字符:用df.columns = df.columns.str.strip()清理,或用rename方法重命名。
  3. 内存不足:对于大文件,使用chunksize参数分块读取,或指定usecols只读需要的列,指定dtype优化数据类型。

查看数据的基本方法必须熟记于心,这是探索数据的第一步:

  • df.head()/df.tail():看头尾几行。
  • df.info():看列名、非空值数量、数据类型。这是你拿到新数据后第一个应该调用的方法,能快速了解数据全貌和潜在问题(如缺失值、类型错误)。
  • df.describe():生成数值型列的统计摘要(计数、均值、标准差、最小值、四分位数、最大值)。
  • df.shape:返回(行数, 列数)。
  • df.columns:列名列表。
  • df.index:行索引。

3.2 数据索引、选取与过滤

这是pandas操作的重中之重,也是考试高频区。主要分为基于标签的.loc和基于整数位置的.iloc

# .loc 基于标签 print(df.loc['S001']) # 选取索引为'S001'的行 print(df.loc['S001':'S002', '姓名':'成绩']) # 行、列切片(闭区间) print(df.loc[df['年龄'] > 20, ['姓名', '成绩']]) # 布尔索引与列筛选结合 # .iloc 基于整数位置 print(df.iloc[0]) # 第一行 print(df.iloc[0:2, 1:3]) # 前两行,第2到3列(左闭右开) # 直接索引(容易混淆,慎用) print(df['姓名']) # 取单列,返回Series print(df[['姓名', '成绩']]) # 取多列,返回DataFrame print(df[0:2]) # 行切片,基于整数位置

重要注意事项.loc是闭区间[start:end],而.iloc是Python标准的左闭右开区间[start:end)。这是最常见的错误来源之一。我的建议是,除非非常简单的情况,否则统一使用.loc.iloc,放弃直接索引的行切片,概念更清晰。

布尔过滤是数据清洗和探索的灵魂。你需要熟练使用比较运算符(>, <, ==, !=)、逻辑运算符(&(与)、|(或)、~(非))以及isin()str.contains()等方法。

# 筛选年龄大于20且成绩大于90的学生 condition = (df['年龄'] > 20) & (df['成绩'] > 90) filtered_df = df[condition] # 筛选姓名包含“三”或“四”的学生 name_condition = df['姓名'].str.contains('三|四') # 筛选姓名在某个列表里的学生 list_condition = df['姓名'].isin(['张三', '王五'])

避坑技巧:进行多个条件的布尔运算时,每个条件必须用括号()括起来,否则会因为运算符优先级问题导致错误。这是新手必踩的坑。

3.3 数据清洗:处理缺失值与重复值

真实数据没有完美的,清洗是数据分析耗时最长的步骤之一。

处理缺失值pandasNaN(Not a Number)表示缺失。常用方法:

  • df.isnull()/df.notnull():检测缺失值,返回布尔矩阵。
  • df.dropna():删除含有缺失值的行或列(axis参数)。
  • df.fillna(value):用指定值填充缺失值。value可以是一个标量、字典(不同列用不同值)、或使用前向/后向填充(method='ffill''bfill')。
# 删除所有包含缺失值的行 df_cleaned = df.dropna() # 用该列的平均值填充‘成绩’列的缺失值 df['成绩'].fillna(df['成绩'].mean(), inplace=True) # 用前一个有效值向前填充 df.fillna(method='ffill', inplace=True)

实操心得:不要一上来就dropna,这可能会丢失大量有价值的数据。先看缺失比例(df.isnull().sum() / len(df)),如果某列缺失超过50%,可以考虑删除该列;如果某行缺失关键信息,再删除行。对于数值列,常用均值、中位数填充;对于类别列,常用众数填充。inplace=True表示原地修改,慎用,建议先赋值给新变量观察效果。

处理重复值

  • df.duplicated():标记重复行。
  • df.drop_duplicates():删除重复行。可以通过subset参数指定依据哪些列判断重复,keep参数决定保留第一个还是最后一个。
# 删除完全重复的行 df_unique = df.drop_duplicates() # 根据‘姓名’列去重,保留第一次出现的记录 df_unique_by_name = df.drop_duplicates(subset=['姓名'], keep='first')

3.4 数据转换:类型转换、字符串操作与apply函数

类型转换:使用astype()方法。

df['年龄'] = df['年龄'].astype('int32') # 将字符串转换为日期时间 df['日期列'] = pd.to_datetime(df['日期列'])

字符串操作:通过.str访问器,可以方便地使用向量化的字符串方法,避免循环。

df['姓名'] = df['姓名'].str.upper() # 大写 df['姓名'] = df['姓名'].str.strip() # 去空格 df['邮箱域名'] = df['邮箱'].str.split('@').str[1] # 提取域名

apply函数:当内置的向量化操作无法满足复杂逻辑时,apply是你的瑞士军刀。它可以对SeriesDataFrame的行/列应用一个自定义函数。

# 对‘成绩’列应用一个函数,将成绩转换为等级 def grade_to_level(score): if score >= 90: return 'A' elif score >= 80: return 'B' else: return 'C' df['等级'] = df['成绩'].apply(grade_to_level) # 对每一行应用函数(axis=1) df['综合信息'] = df.apply(lambda row: f"{row['姓名']}-{row['年龄']}", axis=1)

注意事项apply虽然灵活,但性能上不如pandas内置的向量化操作。对于大数据集,能不用apply就不用,优先寻找向量化解决方案。lambda表达式在这里非常常用。

3.5 数据分组与聚合:groupby的魔法

groupbypandas最强大的功能之一,它遵循“拆分-应用-合并”的模式。

# 按‘班级’分组,计算每班的平均成绩 grouped = df.groupby('班级') avg_score_by_class = grouped['成绩'].mean() # 一次进行多个聚合计算 agg_result = grouped['成绩'].agg(['mean', 'std', 'max', 'min']) # 对不同列进行不同聚合 agg_result2 = grouped.agg({'成绩': 'mean', '年龄': 'max'}) # 分组后过滤:筛选出组内平均成绩大于85的班级 filtered_groups = grouped.filter(lambda x: x['成绩'].mean() > 85)

核心理解df.groupby('key')产生的是一个DataFrameGroupBy对象,它还没有进行实际计算。只有当你对这个对象调用聚合函数(mean,sum,count等)或应用其他操作时,计算才会发生。你可以把它想象成一个惰性计算的“视图”。

常见问题:分组后索引变成了分组键。如果想将分组键变回普通列,使用reset_index()方法:agg_result.reset_index()

3.6 数据合并与连接:merge与concat

数据分析常常需要整合多个数据源。

pd.concat:主要用于沿轴(行或列)堆叠多个DataFrameSeries

df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']}) df2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']}) result = pd.concat([df1, df2], ignore_index=True) # 纵向堆叠,忽略原索引

pd.merge:基于一个或多个键将不同DataFrame中的行连接起来,类似于SQL的JOIN操作。

left = pd.DataFrame({'key': ['K0', 'K1', 'K2'], 'A': ['A0', 'A1', 'A2']}) right = pd.DataFrame({'key': ['K0', 'K1', 'K3'], 'B': ['B0', 'B1', 'B3']}) # 内连接(默认) inner_join = pd.merge(left, right, on='key') # 左连接 left_join = pd.merge(left, right, on='key', how='left') # 外连接 outer_join = pd.merge(left, right, on='key', how='outer')

如何选择:简单堆叠用concat,基于共同列(键)关联行用mergemerge的参数how决定了连接类型(inner,left,right,outer),on指定连接键,如果左右键名不同,用left_onright_on

4. 数据可视化:matplotlib与pandas绘图

数据分析的结果,最终要靠图表说话。matplotlib是绘图的基础库,pandasplot方法对其进行了封装,更方便。

4.1 基础绘图流程与图形元素

一个最基本的matplotlib绘图流程如下:

import matplotlib.pyplot as plt # 1. 准备数据 x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] # 2. 创建图形和坐标轴 fig, ax = plt.subplots(figsize=(8, 6)) # fig是画布,ax是坐标系 # 3. 在坐标轴上绘图 ax.plot(x, y, marker='o', linestyle='--', color='b', label='线性增长') # 或使用pandas的plot接口(更简洁) # df['成绩'].plot(kind='line', ax=ax) # 4. 设置图形元素 ax.set_xlabel('X轴标签') ax.set_ylabel('Y轴标签') ax.set_title('我的第一个图表') ax.legend() # 显示图例 ax.grid(True, linestyle=':', alpha=0.5) # 显示网格线 # 5. 显示或保存图形 plt.tight_layout() # 自动调整子图参数,使之填充整个图像区域 plt.savefig('my_plot.png', dpi=300) # 保存高清图 plt.show()

核心概念

  • Figure:整个画布,可以包含多个Axes
  • Axes:坐标系,一个具体的图形(如折线图、柱状图)就画在一个Axes上。我们绝大多数操作都是在Axes对象(上例中的ax)上进行的。
  • Axis:坐标轴。

实操心得:我强烈推荐使用面向对象的写法(fig, ax = plt.subplots()),而不是plt.plot()plt.xlabel()这种基于状态的写法。前者逻辑更清晰,尤其在绘制多子图时优势巨大。figsize参数控制图形宽高(单位英寸),dpi控制保存图片的清晰度。

4.2 常用图表类型与pandas集成

pandasSeriesDataFrame都有一个plot方法,通过kind参数指定图表类型,非常便捷。

# 折线图 - 观察趋势 df['成绩'].plot(kind='line', title='成绩趋势图') # 或 df.plot(x='日期', y='销售额', kind='line') # 柱状图 - 比较类别 df.groupby('班级')['成绩'].mean().plot(kind='bar', color='skyblue', edgecolor='black') # 水平柱状图用 kind='barh' # 直方图 - 查看分布 df['年龄'].plot(kind='hist', bins=10, alpha=0.7, rwidth=0.85) # 箱线图 - 查看分布、识别异常值 df[['语文','数学','英语']].plot(kind='box') # 散点图 - 查看两个变量的关系 df.plot(kind='scatter', x='学习时长', y='成绩') # 饼图 - 显示占比(谨慎使用,尤其类别多时) df['班级'].value_counts().plot(kind='pie', autopct='%1.1f%%')

注意事项

  1. 折线图的X轴数据最好是连续或有序的(如时间)。
  2. 柱状图的柱子之间通常有间隙,直方图的柱子是紧挨着的,用于表示连续数据的分布。
  3. 箱线图的“箱子”展示了数据的四分位距(IQR),胡须通常延伸到1.5倍IQR范围内的最远数据点,之外的点被视为异常值(点)。
  4. 饼图在数据可视化界争议较大,当类别超过5个或数值接近时,很难比较。考虑用柱状图或环形图替代。
  5. pandas绘图后,仍然可以用plt.xlabelplt.titlematplotlib函数进行细节调整,它们是相通的。

4.3 多子图绘制与图形美化

绘制多子图是报告中的常客。

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(12, 10)) # 2x2的子图网格 axes = axes.flatten() # 将2x2的axes数组展平为1维,方便循环 # 在第一个子图绘图 axes[0].plot(x1, y1) axes[0].set_title('子图1') # 在第二个子图绘图 axes[1].bar(categories, values) axes[1].set_title('子图2') # ... 以此类推 plt.tight_layout() # 关键!自动调整子图间距,防止标签重叠 plt.show()

图形美化:默认的图表样式比较朴素。可以通过设置颜色、线型、标记、添加文本注释等来美化。

  • 颜色:可以使用颜色名称('red')、十六进制码('#FF5733')、RGB元组((0.1, 0.2, 0.5))。
  • 线型和标记linestyle'-','--',':','-.'),marker'o','s','^','D')。
  • 添加文本ax.text(x, y, '文本内容'),用于在特定坐标添加注释。
  • 添加箭头注释ax.annotate('注释文本', xy=(目标点坐标), xytext=(文本起始坐标), arrowprops=dict(arrowstyle='->'))。这是考试和实际应用中很实用的功能,用于高亮图表中的特定点。

关于twinx:当需要在一个图中显示两个量纲不同的Y轴时使用。网络热词中提到的“matplotlib twinx出现两张图”问题,通常是因为没有正确地将第二个Y轴的数据绘制在对应的Axes上。

fig, ax1 = plt.subplots() ax1.plot(x, y1, 'g-') ax1.set_ylabel('Y1轴', color='g') ax2 = ax1.twinx() # 创建共享X轴的新Y轴 ax2.plot(x, y2, 'b--') ax2.set_ylabel('Y2轴', color='b') # 这样两条线就会出现在同一个图里,而不是两个独立的图

5. 环境配置、常见错误与实战技巧

5.1 Python环境与包管理

对于数据分析,我首推Anaconda发行版。它集成了Python、Numpypandasmatplotlib等几乎所有你需要的科学计算包,还有强大的conda包和环境管理器。

安装与配置

  1. 从官网下载Anaconda安装包,一路下一步即可。
  2. 在开始菜单打开Anaconda Prompt(Windows)或终端(Mac/Linux)。
  3. 创建一个独立的虚拟环境是个好习惯:conda create -n data_analysis python=3.9
  4. 激活环境:conda activate data_analysis
  5. 安装包:conda install numpy pandas matplotlib jupyterpip install numpy pandas matplotlib

关于离线安装:如果电脑无法联网,需要离线安装pandas等包(如热词中提到的“anaconda如何离线安装pandas”)。你需要在一台有网的电脑上,用pip download pandas -d ./packages下载包及其所有依赖的.whl.tar.gz文件,然后拷贝到离线电脑,用pip install --no-index --find-links=./packages pandas安装。

VSCode配置:在VSCode中,确保左下角选择了正确的Python解释器(你创建的data_analysis环境)。安装Python扩展后,就能获得代码提示、调试等功能,体验很好。

5.2 高频错误排查与解决

这里汇总了大家最容易遇到的几个错误:

  1. ModuleNotFoundError: No module named 'numpy'

    • 原因:没有安装numpy,或者在错误的Python环境中运行。
    • 解决:在终端用pip list检查当前环境已安装的包。确保在正确的环境中用pip install numpy安装。
  2. RuntimeError: Numpy was built with baseline optimizations:

    • 原因:这是一个警告而非错误,通常出现在较旧的CPU上。它提示你的Numpy使用了较新的指令集编译,而你的CPU不支持。
    • 解决:可以忽略,程序通常能正常运行。如果追求性能,可以尝试用conda install numpy重装(conda的版本可能针对更广泛的CPU优化),或者从源码编译。
  3. Process finished with exit code -1066598273 (0xc06d007f)

    • 原因:这是一个Windows上的通用崩溃代码,通常与内存访问冲突、软件冲突或matplotlib后端问题有关。
    • 解决
      • 尝试在代码开头强制指定matplotlib使用非交互式后端:import matplotlib; matplotlib.use('Agg')
      • 更新matplotlib到最新版本。
      • 检查是否有其他软件冲突(如某些杀毒软件)。
  4. KeyErrorIndexError

    • 原因:用.loc[]索引时,使用了不存在的标签或位置。
    • 解决:打印df.columnsdf.index确认标签,使用df.shape确认位置范围。使用df.get('列名', default_value)可以避免KeyError
  5. SettingWithCopyWarning

    • 原因:这是一个警告,提示你对一个可能是切片副本的DataFrame进行赋值操作,原始数据可能不会被修改。
    • 解决:这是pandas最著名的坑之一。确保你的赋值操作对象是明确的。如果明确想修改原始数据的一个子集,使用.loc索引:df.loc[mask, '列名'] = new_value。如果只是想处理副本,可以显式复制:df_subset = df[mask].copy()

5.3 期末实战与复习策略

最后,结合一个微型实战案例,串联一下核心流程,并给出复习建议。

案例:分析学生成绩表假设有students.csv,包含姓名班级语文数学英语总分列。

import pandas as pd import matplotlib.pyplot as plt # 1. 加载与探索 df = pd.read_csv('students.csv') print(df.info()) print(df.describe()) # 2. 数据清洗 # 检查缺失值 print(df.isnull().sum()) # 假设用平均分填充缺失的单一科目成绩 df.fillna(df.mean(numeric_only=True), inplace=True) # 3. 数据分析 # 计算各科平均分 subject_avg = df[['语文','数学','英语']].mean() # 按班级统计平均总分 class_avg_total = df.groupby('班级')['总分'].mean().sort_values(ascending=False) # 找出数学最高分的学生 top_math_student = df.loc[df['数学'].idxmax(), '姓名'] # 4. 数据可视化 fig, axes = plt.subplots(1, 2, figsize=(14, 5)) # 子图1:各科平均分柱状图 subject_avg.plot(kind='bar', ax=axes[0], color=['red','green','blue']) axes[0].set_title('各科目平均分对比') axes[0].set_ylabel('平均分') # 子图2:班级平均总分柱状图 class_avg_total.plot(kind='barh', ax=axes[1], color='orange') # 水平柱状图更直观 axes[1].set_title('各班级平均总分排名') axes[1].set_xlabel('平均总分') plt.tight_layout() plt.savefig('成绩分析.png', dpi=150) plt.show() # 5. 输出结论 print(f"全校数学最高分获得者是:{top_math_student}") print("各班级平均总分排名:") print(class_avg_total)

期末复习策略

  1. 理解优先于记忆:不要死记硬背每个函数的参数。理解Numpy的数组思想、pandas的表结构思想、matplotlib的图形对象层次。
  2. 动手敲代码:只看不练永远学不会。把课件或书上的例子自己敲一遍,然后尝试修改参数,观察输出变化。
  3. 梳理流程:按照“数据加载 -> 查看探索 -> 清洗处理 -> 转换整理 -> 分组聚合 -> 可视化 -> 结论”这个流程,把每个环节常用的函数和方法串起来。
  4. 重点突破:针对自己的薄弱环节(比如总是搞混.loc.iloc,或者对groupby理解不深),找相关题目集中练习。
  5. 善用官方文档和搜索:考试时如果忘记某个参数,记住核心函数名,靠逻辑也能猜个八九不离十。平时多查pandas官方文档,它是最好的参考书。

复习时,把这份归纳当作地图,哪里不熟点哪里。把核心的代码片段(如数据读取、索引过滤、分组聚合、绘图框架)自己整理成一个“速查笔记”,考前快速过一遍,效果会非常好。数据分析是一门实践学科,这些工具用的多了,自然就熟了。祝大家期末都能取得好成绩!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 15:04:00

从数据集到部署:w2v-xls-r-uk全流程实践指南

从数据集到部署&#xff1a;w2v-xls-r-uk全流程实践指南 【免费下载链接】w2v-xls-r-uk 项目地址: https://ai.gitcode.com/hf_mirrors/Yehor/w2v-xls-r-uk w2v-xls-r-uk是一款基于facebook/wav2vec2-xls-r-300m预训练模型优化的乌克兰语自动语音识别系统&#xff0c;它…

作者头像 李华
网站建设 2026/8/5 15:03:26

TypeScript ESLint Parser扩展开发:自定义规则与AST处理

TypeScript ESLint Parser扩展开发&#xff1a;自定义规则与AST处理 【免费下载链接】typescript-eslint-parser An ESLint custom parser which leverages TypeScript ESTree to allow for ESLint to lint TypeScript source code. 项目地址: https://gitcode.com/gh_mirror…

作者头像 李华
网站建设 2026/8/5 15:00:53

gh_mirrors/si/SIEM实战入门:5分钟搭建你的第一个安全告警规则

gh_mirrors/si/SIEM实战入门&#xff1a;5分钟搭建你的第一个安全告警规则 【免费下载链接】SIEM SIEM Tactics, Techiques, and Procedures 项目地址: https://gitcode.com/gh_mirrors/si/SIEM SIEM&#xff08;安全信息与事件管理&#xff09;是企业安全体系的核心组件…

作者头像 李华
网站建设 2026/8/5 14:58:26

AR模型核心公式解析:从延迟算子到Green函数的实战应用

1. 从预测明天股价说起&#xff1a;为什么我们需要AR模型&#xff1f; 如果你尝试过预测明天的股票价格、下个月的用电量&#xff0c;或者仅仅是下周的气温&#xff0c;你大概率会感到沮丧。这些数据点按时间顺序排列&#xff0c;彼此之间并非独立&#xff0c;明天的价格深受今…

作者头像 李华
网站建设 2026/8/5 14:52:51

计算机网络_UDP和TCP

TCP&#xff08;传输控制协议&#xff09;和 UDP&#xff08;用户数据报协议&#xff09;是 TCP/IP 协议簇中传输层的两大核心协议&#xff0c;它们的设计理念完全相反 ——TCP 追求可靠传输&#xff0c;UDP 追求高效传输&#xff0c;这直接决定了它们在不同业务场景&#xff0…

作者头像 李华