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

相关文章
|
8天前
|
数据处理 Python
在数据科学领域,Pandas和NumPy是每位数据科学家和分析师的必备工具
在数据科学领域,Pandas和NumPy是每位数据科学家和分析师的必备工具。本文通过问题解答形式,深入探讨Pandas与NumPy的高级操作技巧,如复杂数据筛选、分组聚合、数组优化及协同工作,结合实战演练,助你提升数据处理能力和工作效率。
27 5
|
9天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
21 2
|
7天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
7天前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
6月前
|
Python
python相关库的安装:pandas,numpy,matplotlib,statsmodels
python相关库的安装:pandas,numpy,matplotlib,statsmodels
163 0
|
Python Windows
python怎么安装第三方库,python国内镜像源,终于找到最全的安装教程啦;如Requests,Scrapy,NumPy,matplotlib,Pygame,Pyglet,Tkinter
python怎么安装第三方库,python国内镜像源,终于找到最全的安装教程啦;如Requests,Scrapy,NumPy,matplotlib,Pygame,Pyglet,Tkinter
1313 0
|
Python
python如何安装numpy模块?
python安装numpy模块 python numpy安装思路 第一次安装时的思路 第一次安装时遇到的坑 第二次安装的思路(快速安装避免踩坑)
583 0
python如何安装numpy模块?
|
Python Windows
微软LightGBM Windows下Python安装:ImportError: cannot import name NUMPY_MKL
最近写了一篇关于“微软开源分布式高性能GB框架LightGBM安装使用”的文章,有小伙伴安装Python环境遇到了问题。我个人也尝试安装了一下,确实遇到了很多问题。"Windows7下python的scipy库的安装"的问题解决后,又遇到“ImportError: cannot import name NUMPY_MKL”的问题。
1942 0