Python数据分析:Numpy、Pandas高级

简介: 在上一篇博文中,我们介绍了Python数据分析中NumPy和Pandas的基础知识。本文将深入探讨NumPy和Pandas的高级功能,并通过一个综合详细的例子展示这些高级功能的应用。

在上一篇博文中,我们介绍了Python数据分析中NumPy和Pandas的基础知识。本文将深入探讨NumPy和Pandas的高级功能,并通过一个综合详细的例子展示这些高级功能的应用。

一、NumPy高级功能

1.1 高级数组操作

数组的广播

广播机制使得NumPy能够对不同形状的数组进行算术运算。这是一种方便且高效的数组运算方式。

import numpy as np
array1 = np.array([1, 2, 3])
array2 = np.array([[4], [5], [6]])
result = array1 + array2
print(result)

高级索引

NumPy支持布尔索引和花式索引,可以用来从数组中提取子集。

# 布尔索引
array = np.array([1, 2, 3, 4, 5])
bool_index = array > 3
print(array[bool_index])
# 花式索引
array = np.array([10, 20, 30, 40, 50])
index = [0, 2, 4]
print(array[index])

1.2 数学和统计函数

NumPy提供了丰富的数学和统计函数,可以对数组进行各种数学运算和统计分析。

array = np.array([1, 2, 3, 4, 5])
# 求和
print(np.sum(array))
# 均值
print(np.mean(array))
# 标准差
print(np.std(array))
# 最大值和最小值
print(np.max(array))
print(np.min(array))

1.3 线性代数

NumPy的线性代数模块numpy.linalg提供了矩阵和向量的线性代数运算功能。

# 矩阵乘法
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])
result = np.dot(matrix1, matrix2)
print(result)
# 矩阵求逆
inverse_matrix = np.linalg.inv(matrix1)
print(inverse_matrix)
# 特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(matrix1)
print(eigenvalues)
print(eigenvectors)

1.4 随机数生成

NumPy的random模块提供了生成各种随机数的功能。

# 生成均匀分布的随机数
uniform_random = np.random.rand(3, 3)
print(uniform_random)
# 生成正态分布的随机数
normal_random = np.random.randn(3, 3)
print(normal_random)
# 生成随机整数
random_integers = np.random.randint(1, 10, size=(3, 3))
print(random_integers)

二、Pandas高级功能

2.1 高级数据结构操作

多级索引

Pandas支持多级索引(层次索引),可以用于处理高维度的数据。

import pandas as pd
data = {
    'Year': [2020, 2020, 2021, 2021],
    'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles'],
    'Population': [8419600, 3980400, 8399000, 3967000]
}
df = pd.DataFrame(data)
df.set_index(['Year', 'City'], inplace=True)
print(df)

数据透视表

数据透视表用于汇总和分析数据,是数据分析中的常用工具。

data = {
    'Name': ['Tom', 'Jerry', 'Tom', 'Jerry'],
    'Subject': ['Math', 'Math', 'Science', 'Science'],
    'Score': [85, 92, 78, 88]
}
df = pd.DataFrame(data)
pivot_table = pd.pivot_table(df, values='Score', index='Name', columns='Subject')
print(pivot_table)

2.2 高级数据清洗

Pandas提供了许多高级的数据清洗功能,可以处理更复杂的数据清洗任务。

# 数据替换
df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]})
df.replace({1: 100, 2: 200}, inplace=True)
print(df)
# 处理重复值
df = pd.DataFrame({'A': [1, 2, 2, 4], 'B': [5, 6, 6, 8]})
df.drop_duplicates(inplace=True)
print(df)
# 分割和提取
df = pd.DataFrame({'Full Name': ['Tom Smith', 'Jerry Lee']})
df[['First Name', 'Last Name']] = df['Full Name'].str.split(' ', expand=True)
print(df)

2.3 时间序列分析

Pandas的时间序列功能可以处理和分析时间序列数据。

# 创建时间序列
dates = pd.date_range('20230101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print(df)
# 重采样
df_resampled = df.resample('M').mean()
print(df_resampled)

2.4 合并和连接

Pandas提供了多种合并和连接数据的方法,可以方便地进行数据整合。

df1 = pd.DataFrame({'Key': ['A', 'B', 'C'], 'Value1': [1, 2, 3]})
df2 = pd.DataFrame({'Key': ['A', 'B', 'D'], 'Value2': [4, 5, 6]})
# 合并
df_merged = pd.merge(df1, df2, on='Key', how='inner')
print(df_merged)
# 连接
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2']})
df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2'], 'D': ['D0', 'D1', 'D2']})
df_concated = pd.concat([df1, df2], axis=1)
print(df_concated)

三、综合示例

以下是一个综合详细的示例,演示了如何使用NumPy和Pandas的高级功能进行数据处理和分析。该示例将生成一个包含随机数据的CSV文件,然后读取该文件并进行数据分析。

3.1 生成随机数据并保存为CSV文件

import numpy as np
import pandas as pd
# 设置随机种子
np.random.seed(0)
# 生成随机数据
data = {
    'Name': ['Tom', 'Jerry', 'Alice', 'Bob', 'Charlie'],
    'Age': np.random.randint(18, 30, 5),
    'Height': np.random.randint(150, 200, 5),
    'Weight': np.random.randint(50, 100, 5),
    'Score': np.random.randint(60, 100, 5)
}
# 创建DataFrame
df = pd.DataFrame(data)
# 保存为CSV文件
df.to_csv('random_data.csv', index=False)

3.2 读取CSV文件并进行数据分析

# 读取CSV文件
df = pd.read_csv('random_data.csv')
# 显示前几行数据
print("数据前几行:")
print(df.head())
# 统计数据
print("\n数据统计:")
print(df.describe())
# 按年龄分组并计算平均值
print("\n按年龄分组并计算平均值:")
print(df.groupby('Age').mean())
# 添加一列BMI(Body Mass Index)
df['BMI'] = df['Weight'] / (df['Height'] / 100) ** 2
# 显示计算后的数据
print("\n添加BMI列后的数据:")
print(df)
# 处理缺失值(模拟缺失值处理)
df.loc[2, 'Weight'] = np.nan
df = df.fillna(df['Weight'].mean())
print("\n处理缺失值后数据:")
print(df)
# 保存处理后的数据到新的CSV文件
df.to_csv('processed_data.csv', index=False

3.3 运行结果

数据前几行:
      Name  Age  Height  Weight  Score
0      Tom   26     189    86.0     91
1    Jerry   22     176    65.0     96
2    Alice   25     158    78.8     85
3      Bob   29     155    98.0     77
4  Charlie   28     151    66.0     94
数据统计:
             Age      Height      Weight      Score
count   5.000000    5.000000    5.000000   5.000000
mean   26.000000  165.800000   78.800000  88.600000
std     2.915476   16.445498   14.135
936   7.396683
min    22.000000  151.000000   65.000000  77.000000
25%    25.000000  155.000000   66.000000  85.000000
50%    26.000000  158.000000   86.000000  91.000000
75%    28.000000  176.000000   88.000000  94.000000
max    29.000000  189.000000   98.000000  96.000000
按年龄分组并计算平均值:
      Height  Weight  Score       BMI
Age                                    
22    176.0    65.0   96.0  20.991364
25    158.0    78.8   85.0  31.585231
26    189.0    86.0   91.0  24.083681
28    151.0    66.0   94.0  28.899145
29    155.0    98.0   77.0  40.834151
添加BMI列后的数据:
      Name  Age  Height  Weight  Score        BMI
0      Tom   26     189    86.0     91  24.083681
1    Jerry   22     176    65.0     96  20.991364
2    Alice   25     158    78.8     85  31.585231
3      Bob   29     155    98.0     77  40.834151
4  Charlie   28     151    66.0     94  28.899145
处理缺失值后数据:
      Name  Age  Height     Weight  Score        BMI
0      Tom   26     189  86.000000     91  24.083681
1    Jerry   22     176  65.000000     96  20.991364
2    Alice   25     158  78.800000     85  31.585231
3      Bob   29     155  98.000000     77  40.834151
4  Charlie   28     151  66.000000     94  28.899145

通过上述综合示例,我们展示了如何使用NumPy和Pandas的高级功能进行数据生成、读取、处理和分析。这些高级功能使得数据分析更加高效和灵活,帮助我们更好地理解和利用数据。


作者:Rjdeng

链接:https://juejin.cn/post/7399661995090247730

相关文章
|
10天前
|
数据挖掘 PyTorch TensorFlow
|
2天前
|
机器学习/深度学习 数据挖掘 大数据
大数据时代的“淘金术”:Python数据分析+深度学习框架实战指南
在大数据时代,数据被视为新财富源泉,而从海量信息中提取价值成为企业竞争的核心。本文通过对比方式探讨如何运用Python数据分析与深度学习框架实现这一目标。Python凭借其强大的数据处理能力及丰富库支持,已成为数据科学家首选工具;而TensorFlow和PyTorch等深度学习框架则为复杂模型构建提供强有力的技术支撑。通过融合Python数据分析与深度学习技术,我们能在各领域中发掘数据的无限潜力。无论是商业分析还是医疗健康,掌握这些技能都将为企业和社会带来巨大价值。
19 6
|
8天前
|
数据采集 传感器 数据可视化
利用Python进行数据分析与可视化
【9月更文挑战第11天】在数字化时代,数据已成为企业决策和科学研究的关键。本文将引导读者了解如何使用Python这一强大的工具进行数据分析和可视化,帮助初学者理解数据处理的流程,并掌握基本的可视化技术。通过实际案例,我们将展示如何从原始数据中提取信息,进行清洗、处理,最终以图形方式展现结果,使复杂的数据变得直观易懂。
|
10天前
|
机器学习/深度学习 数据挖掘 TensorFlow
🔍揭秘Python数据分析奥秘,TensorFlow助力解锁数据背后的亿万商机
【9月更文挑战第11天】在信息爆炸的时代,数据如沉睡的宝藏,等待发掘。Python以简洁的语法和丰富的库生态成为数据分析的首选,而TensorFlow则为深度学习赋能,助你洞察数据核心,解锁商机。通过Pandas库,我们可以轻松处理结构化数据,进行统计分析和可视化;TensorFlow则能构建复杂的神经网络模型,捕捉非线性关系,提升预测准确性。两者的结合,让你在商业竞争中脱颖而出,把握市场脉搏,释放数据的无限价值。以下是使用Pandas进行简单数据分析的示例:
24 5
|
8天前
|
机器学习/深度学习 数据可视化 数据挖掘
深入浅出:使用Python进行数据分析的入门指南
【9月更文挑战第11天】本文旨在为初学者提供一条清晰的道路,通过Python探索数据科学的奇妙世界。我们将从基础语法讲起,逐步深入到数据处理、可视化以及机器学习等高级话题。文章不仅分享理论知识,还将通过实际代码示例,展示如何应用这些知识解决实际问题。无论你是编程新手,还是希望扩展技能的数据分析师,这篇文章都将是你宝贵的资源。
|
10天前
|
数据采集 数据挖掘 数据处理
使用Python和Pandas处理CSV数据
使用Python和Pandas处理CSV数据
43 5
|
2天前
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
在数据驱动时代,Python凭借简洁的语法和强大的库支持,成为数据分析与机器学习的首选语言。Pandas和NumPy是Python数据分析的基础,前者提供高效的数据处理工具,后者则支持科学计算。TensorFlow与PyTorch作为深度学习领域的两大框架,助力数据科学家构建复杂神经网络,挖掘数据深层价值。通过Python打下的坚实基础,结合TensorFlow和PyTorch的强大功能,我们能在数据科学领域探索无限可能,解决复杂问题并推动科研进步。
11 0
|
1月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
44 2
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
|
1月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
52 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析

热门文章

最新文章