A. python高级数据结构——堆
在一个 最小堆 (min heap) 中,如果 P 是 C 的一个父级节点,那么 P 的 key(或 value) 应小于或等于 C 的对应值。 正因为此,堆顶元素一定是最小的,我们会利用这个特点求最小值或者第 k 小的值。
在一个 最大堆 (max heap) 中,P 的 key(或 value) 大于或等于 C 的对应值。
以python为例,说明堆的几个常见操作,这里需要用到一个内置的包:heapq
python中使用堆是通过传入一个数组,然后调用一个函数,在原地让传入的数据具备堆的特性
需要注意的是,heapify默认构造的是小顶堆(min heap),如果要构造大顶堆,思路是把所有的数值倒转,既* -1,例如:
使用heapq提供的函数: heappop 来实现
具体使用方式参考 初始化Heapify
使用heapq提供的函数: heappush 来实现
同时heapq还提供另外一个函数: heappushpop ,能够在一个函数实现push&pop两个操作;顺序是:先push再pop
根据官方文档的描述,这个函数会比先在外围先调用heappush,再调用heappop,效率更高
先pop数据再push数据,和heappushpop的顺序是反着的; 同样的,这样调用的性能也会比先调用heappop再调用heappush更好
如果pop的时候队列是空的,会抛出一个异常
可以通过 heapq.merge 将多个 已排序 的输入合并为一个已排序的输出,这个本质上不是堆;其实就是用两个指针迭代
对于这个问题,有一个算法题可以实现相同的功能
从 iterable 所定义的数据集中返回前 n 个最大/小元素组成的列表。
函数为: heapq.nlargest() | heapq.nsmallest()
heapq - Heap queue algorithm - Python 3.10.4 documentation
B. 数据分析:Python建模库介绍
分析和构建模型时,通常需要结合使用pandas进行数据管理和构建模型库。在机器学习领域,特征工程是模型开发的关键部分,它涉及从原始数据集中提取对模型有帮助的有效信息的转换过程。pandas与NumPy数组的结合点通常在于数据的加载、清洗和转换。通过使用DataFrame的.values属性,可以将数据转换为NumPy数组,进行进一步的处理或分析。反之,从数组转换回DataFrame,可以满足数据分析和建模的需求。在数据处理中,需要特别注意数据类型,确保转换的正确性和数据的同构性。
在构建模型描述时,Patsy是一个强大的工具,它提供了一种简洁的基于字符串的公式语法,用于描述统计模型,特别是线性模型。Patsy能够生成设计矩阵,为模型准备数据。例如,表示为 a + b 的公式并不意味着将a和b相加,而是用来创建模型设计矩阵的术语。使用patsy.dmatrices函数结合数据集和公式,可以生成设计矩阵,用于进一步的模型拟合。在模型中,截距项是一个惯例,通常包含在设计矩阵中,但可以通过修改公式来去除。此外,Patsy支持数据转换,如标准化和中心化,通过内建的函数实现。
在建模过程中,数据预处理至关重要,包括处理非数值型数据。Patsy能够将非数值型数据转换为哑变量,方便模型的处理。在包含多个类型术语时,处理会更加复杂,但使用特定的方法可以分析模型,如ANOVA模型。在使用Patsy公式进行数据转换时,要特别注意状态变换,确保模型在新数据集上的准确预测。
statsmodels库提供了广泛的经典统计模型,包括线性模型、回归模型和时间序列分析模型。它支持拟合多种模型,执行统计测试和数据探索。在评估线性模型时,statsmodels提供了多种接口,如OLS类用于最小二乘线性回归。模型的拟合结果可以生成详细诊断报告,包括估计的参数和统计指标。在时间序列分析中,statsmodels提供了自回归过程、卡尔曼滤波和其他状态空间模型。
scikit-learn是广泛使用的Python机器学习库,包含了多种监督和无监督学习方法。它提供了模型选择、评估、数据转换和持久化的工具,适用于分类、聚类、预测等任务。在处理数据集时,pandas与scikit-learn结合使用,可以进行数据预处理,例如处理缺失值。在构建预测模型时,scikit-learn提供了多种模型,如逻辑回归,用于预测乘客是否能幸存于泰坦尼克号事件。通过交叉验证技术,可以评估模型性能并调整参数以避免过拟合。最终,通过使用模型进行预测,可以实现样本外数据的准确预测。
C. 如何用Python制作两列数据( x和y)的折线图
要制作两列数据(x和y)的折线图,你可以使用各种数据可视化工具,如Excel、Python的matplotlib库、R语言等。下面以Excel为例说明具体步骤:
1. 准备数据:首先,你需要有两列数据,一列作为x轴,另一列作为y轴。这些数据可以是实验数据、统计数据或其他任何形式的数据。
2. 打开Excel并输入数据:打开Excel,创建一个新的工作表。在第一列中输入你的x轴数据,在第二列中输入你的y轴数据。
3. 选择数据并插入折线图:选中你输入的两列数据。然后,点击Excel的“插入”选项卡,在图表区域选择“折线图”。Excel会根据你的数据自动生成一个折线图。
4. 自定义图表:你可以根据需要自定义图表的样式、颜色、标题、坐标轴标签等。Excel提供了丰富的自定义选项,以满足不同的需求。
例子:
假设你有以下数据:
| X | Y |
| --- | --- |
| 1 | 2 |
| 2 | 4 |
| 3 | 6 |
| 4 | 8 |
| 5 | 10 |
你可以在Excel中按照上述步骤制作折线图。首先,将数据输入到Excel的工作表中。然后,选中这两列数据,点击“插入”选项卡,选择“折线图”。Excel会生成一个显示x和y之间关系的折线图。你可以添加标题、坐标轴标签,并根据需要调整图表的样式和颜色。
为什么选择折线图:
折线图是一种常用的数据可视化工具,特别适用于展示两个变量之间的关系,尤其是当其中一个变量是连续的(如时间、温度等)时。通过折线图,你可以清晰地看到数据的变化趋势,从而更容易理解和分析数据。
灵活性和创造性:
虽然Excel是一种常用的工具,但制作折线图并不局限于Excel。根据你的需求和偏好,你可以选择使用其他工具,如Python的matplotlib库或R语言。这些工具提供了更多的灵活性和创造性,允许你创建更复杂、更个性化的图表。例如,你可以使用matplotlib库在Python中创建动态折线图,或者使用R语言创建交互式折线图。
D. 大数据分析如何利用python创建数据透视表
数据透视表,作为大数据分析中的重要工具,将数据进行分类汇总,实现快速理解数据的目的。其核心逻辑在于,从原始数据出发,通过行和列的交叉,形成“二维表”,直观呈现数据之间的关联性。
数据透视表,常称为分类汇总表,其结构包括行(分类变量)、列(分类变量)的交叉部分。比如,以班级为行,科目为列,交叉处显示各科平均分。透视表的构建,可借助Python语言,通过pandas库的pivot_table函数实现,如代码所示。
为了进一步可视化透视表,堆叠条形图成为一种有效方式。以航空公司为例,通过横条形图,可快速观察不同公司的目的地客运人数分布。不同公司用不同条形表示,条形内部的不同颜色代表不同目的地,直观且易于理解。
深入案例分析,以全球2019年前十大航空公司的前十大目的地城市为例。数据准备阶段,首先明确客运分类标准,通常以class = F标记。接着,运用groupby和nlargest函数筛选出前十大客运人数最多的航空公司。然后,查看这些公司的货运情况,利用索引检索数据,找出前十大航空公司的客运目的地城市,进行排序后筛选出前十。
综上所述,数据透视表在大数据分析中扮演着重要角色,通过Python实现,不仅能够快速汇总分类数据,还能结合可视化工具如堆叠条形图,为决策提供直观的依据。实现这一过程的关键在于理解数据透视表的基本逻辑,并灵活运用数据处理与可视化技术。