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

相关文章
|
2月前
|
数据采集 数据可视化 搜索推荐
Python数据分析全流程指南:从数据采集到可视化呈现的实战解析
在数字化转型中,数据分析成为企业决策核心,而Python凭借其强大生态和简洁语法成为首选工具。本文通过实战案例详解数据分析全流程,涵盖数据采集、清洗、探索、建模、可视化及自动化部署,帮助读者掌握从数据到业务价值的完整技能链。
371 0
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
Python数据分析,别再死磕Excel了!
Python数据分析,别再死磕Excel了!
188 2
|
9月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
7月前
|
Python
python pandas学习(一)
该代码段展示了四个主要操作:1) 删除指定列名,如商品id;2) 使用正则表达式模糊匹配并删除列,例如匹配订单商品名称1的列;3) 将毫秒级时间戳转换为带有时区调整的日期时间格式,并增加8小时以适应本地时区;4) 将列表转换为DataFrame后保存为Excel文件,文件路径和名称根据变量拼接而成。
92 3
|
7月前
|
机器学习/深度学习 存储 数据可视化
这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
本书介绍了如何将Python与Excel结合使用,以提升数据分析和处理效率。内容涵盖Python入门、pandas库的使用、通过Python包操作Excel文件以及使用xlwings对Excel进行编程。书中详细讲解了Anaconda、Visual Studio Code和Jupyter笔记本等开发工具,并探讨了NumPy、DataFrame和Series等数据结构的应用。此外,还介绍了多个Python包(如OpenPyXL、XlsxWriter等)用于在无需安装Excel的情况下读写Excel文件,帮助用户实现自动化任务和数据处理。
|
8月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
202 2
|
10月前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
321 5
|
10月前
|
存储 数据可视化 数据挖掘
Python数据分析项目:抖音短视频达人粉丝增长趋势
Python数据分析项目:抖音短视频达人粉丝增长趋势
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
268 1
|
机器学习/深度学习 数据处理 计算机视觉
NumPy实践宝典:Python高手教你如何轻松玩转数据处理!
【8月更文挑战第22天】NumPy是Python科学计算的核心库,专长于大型数组与矩阵运算,并提供了丰富的数学函数。首先需安装NumPy (`pip install numpy`)。之后可通过创建数组、索引与切片、执行数学与逻辑运算、变换数组形状及类型、计算统计量和进行矩阵运算等操作来实践学习。NumPy的应用范围广泛,从基础的数据处理到图像处理都能胜任,是数据科学领域的必备工具。
151 0

热门文章

最新文章

推荐镜像

更多