✍🏻记录学习过程中的输出,坚持每天学习一点点~
❤️希望能给大家提供帮助~欢迎点赞👍🏻+收藏⭐+评论✍🏻+指点🙏
一、Python库说明
Matplotlib
Matplotlib是一个功能强大的Python 2D绘图库,它允许用户生成具有出版品质的图形,并支持多种硬拷贝格式和跨平台的交互式环境。以下是关于Matplotlib的详细介绍:
1. 基础知识
基本图表元素:
x轴和y轴:水平和垂直的轴线。
x轴和y轴刻度:刻度标示坐标轴的分隔,包括最小刻度和最大刻度。
x轴和y轴刻度标签:表示特定坐标轴的值。
绘图区域:实际绘图的区域。
常用属性:
hold属性(不推荐使用,有警告):默认为True,允许在一幅图中绘制多个曲线;当设置为False时,每一个plot都会覆盖前面的plot。
网格线:使用grid方法为图添加网格线,可以通过设置参数调整网格线的粗细和明暗程度。
坐标轴范围:除了plt.axis方法,还可以通过xlim和ylim方法设置坐标轴范围。
图例:使用legend方法添加图例,可以通过在plot函数中增加label参数或在legend方法中传入字符串列表来配置。
2. 安装与导入
安装matplotlib的指令:pip install matplotlib
(注意,matplotlib需要numpy的支持,如果未安装numpy,请先安装numpy)。
推荐的导入matplotlib的写法:import matplotlib.pyplot as plt
。
3. 常用函数
pyplot.plot
:用于绘制线性图、散点图、条形图等多种图形。
pyplot.scatter
:用于绘制散点图,可以指定每个数据点的大小和颜色。
pyplot.bar
:用于绘制垂直条形图,如果需要绘制水平条形图,则使用pyplot.barh。
pyplot.pie
:用于绘制饼状图,展示不同类别占总数的比例。
pyplot.contour
:用于绘制等值线图,展示不同位置的数值高低。
pyplot.imshow
:用于展示图像,可以指定二维数组作为图像数据。
pyplot.hist
:用于绘制直方图,展示数据的分布情况。
4. 配置
永久配置:matplotlib的配置信息是从配置文件读取的。可以在用户级配置文件(如~/.matplotlib/matplotlibrc)中设置永久有效的默认值。
动态配置:在程序中通过代码进行配置,可以覆盖配置文件中的设置。配置方法的优先级为:Matplotlib函数中的设置 > 当前目录下的matplotlibrc文件 > 用户级matplotlibrc文件 > 全局matplotlibrc文件。
5. 示例
Matplotlib的强大之处在于其能够轻松地绘制出各种复杂且美观的图形。例如,通过组合使用不同的函数和设置,可以创建包含散点图、直方图、饼图等多种图形的复杂图表,用于数据分析和可视化。
总之,Matplotlib是一个功能丰富且易于使用的Python绘图库,适用于各种数据分析和可视化场景。
Pandas
Pandas是一个基于NumPy构建的Python数据分析库,它提供了高效且易于使用的数据结构和数据分析工具。以下是关于Pandas的详细介绍:
1. 基本信息
定义:Pandas是一个开源的Python库,最初由AQR Capital Management于2008年4月开发,并于2009年底开源。Pandas的名字来源于“panel data”(面板数据)和“Python data analysis”(Python数据分析)。
作用:Pandas为Python提供了高性能、易于使用的数据结构和数据分析工具,是Python数据分析的核心库之一。
2. 数据结构
Series:Pandas中的一维数组结构,类似于NumPy的一维数组和Python的列表。它可以保存任何数据类型(整数、浮点数、字符串、布尔值等),并有一个与之相关的数据标签(即索引)。
DataFrame:Pandas中的二维表格型数据结构,类似于电子表格或SQL表。DataFrame由多个Series组成,每个Series代表一列。DataFrame既有行索引也有列索引,可以方便地进行数据查找和操作。
其他数据结构:Pandas还支持Panel(三维数组)、Panel4D(四维数组)和PanelND(更多维数组)等数据结构,但Series和DataFrame是应用最为广泛的数据结构。
3. 主要功能
数据读取与写入:Pandas可以从各种文件格式(如CSV、JSON、Excel、SQL等)读取数据,也可以将数据写入这些文件格式。
数据清洗与预处理:Pandas提供了丰富的数据清洗和预处理功能,如缺失值处理、数据类型转换、重复数据删除、数据排序等。
数据探索性分析:Pandas可以计算数据的描述性统计信息(如平均数、中位数、标准差等),并可以绘制各种图表(如直方图、散点图、折线图等)进行数据可视化。
数据建模与分析:Pandas支持各种数据建模和分析方法,如线性回归、逻辑回归、聚类等。
4. 使用场景
金融数据分析:Pandas最初被作为金融数据分析工具而开发出来,因此它在金融领域有着广泛的应用。
学术研究:Pandas在统计学、数据科学、机器学习等领域的学术研究中也有广泛的应用。
商业智能:Pandas可以帮助企业从大量数据中提取有价值的信息,支持商业决策的制定。
5. 特点
高性能:Pandas基于NumPy构建,继承了NumPy的高性能特性。
易用性:Pandas提供了丰富的API和函数,使得数据分析变得简单而高效。
灵活性:Pandas支持多种数据结构和文件格式,并提供了灵活的数据处理和分析方法。
可扩展性:Pandas是开源项目,有着庞大的社区支持和丰富的插件生态系统,可以方便地扩展其功能。
6. 示例
使用Pandas进行数据分析的示例代码可能包括读取数据、数据清洗、数据探索性分析、数据建模等环节。具体示例可以参考Pandas的官方文档和教程。
二、编码案例
1. 数据准备
提前准备一个文本文件(如CSV),其中包含年份、出生人口数、死亡人口数和人口总数。
2.读取数据
使用Pandas库来读取数据。
# 读取CSV文件
df = pd.read_csv('PopulationTest.csv')
3.处理数据
将读取的数据转换为适当的数据结构。
# 确保年份是整数(如果需要)
df['Year'] = df['Year'].astype(int)
# 计算人口增长情况
df['PopulationGrowth'] = df['Births'] - df['Deaths']
# 提取年份和增长数据
years = df['Year']
growth_rates = df['PopulationGrowth']
4.绘制图形
使用matplotlib库来绘制曲线。
# 绘制人口和死亡人数曲线
plt.figure(figsize=(12, 6)) # 设置图形大小
# 绘制人口增长曲线
plt.plot(df['Year'], df['Births'], label='Births', marker='o')
# 绘制死亡人数曲线
plt.plot(df['Year'], df['Deaths'], label='Deaths', marker='^', linestyle='--')
# 添加标题和轴标签
plt.title('Births and Deaths Over Time')
plt.xlabel('Year')
plt.ylabel('Number')
# 添加图例
plt.legend()
# 添加网格线
plt.grid(True)
# 显示图形
plt.show()
# 绘制人口增长曲线
plt.figure(figsize=(12, 8))
plt.plot(df['Year'], df['PopulationGrowth'], label='PopulationGrowth', marker='o')
# 为每个数据点添加标签
for i, txt in enumerate(df['PopulationGrowth']):
if i % 2 == 0:
plt.annotate(f'{txt:.2f}', (df['Year'][i], txt), textcoords="offset points",
xytext=(0, 10), ha='center', color='red') # xytext是文本相对于数据点的位置
else:
plt.annotate(f'{txt:.2f}', (df['Year'][i], txt), textcoords="offset points",
xytext=(0, -10), ha='center', color='green') # xytext是文本相对于数据点的位置
# 添加标题和轴标签
plt.title('PopulationGrowth Over Time')
plt.xlabel('Year')
plt.ylabel('PopulationGrowth')
# 添加图例
plt.legend()
# 添加网格线
plt.grid(True)
# 显示图形
plt.show()
# 绘制柱状图
plt.figure(figsize=(12, 6))
bars = plt.bar(years, growth_rates, color='blue', edgecolor='black') # 设置柱子的颜色和边框颜色
# 为每个柱子添加标签
def autolabel(bars):
i = 0
for bar in bars:
i+=1
height = bar.get_height()
if i%2==0:
plt.text(bar.get_x() + bar.get_width() / 2., height, f'{height}',
ha='center', va='bottom', color='black') # 设置标签文本、位置、颜色等
elif i%3==0:
plt.text(bar.get_x() + bar.get_width() / 2., height-50, f'{height}',
ha='center', va='bottom', color='red') # 设置标签文本、位置、颜色等
else:
plt.text(bar.get_x() + bar.get_width() / 2., height-100, f'{height}',
ha='center', va='bottom', color='brown') # 设置标签文本、位置、颜色等
autolabel(bars)
# 添加标题和轴标签
plt.title('Population Growth Rate Over Time')
plt.xlabel('Year')
plt.ylabel('Growth Rate (%)')
# 显示网格线(可选)
plt.grid(True, axis='y', alpha=0.5)
# 显示图形
plt.tight_layout() # 自动调整子图参数,使之填充整个图像区域
plt.show()