Pandas是用于数据操作和分析的强大库

2023-11-02

Python中有许多流行的统计分析库,下面是其中一些主要的库及其主要用法:

  1. NumPy:

    • 用途:NumPy是Python中的数值计算库,提供多维数组对象和各种数学函数,用于高效处理大规模数据和执行数值计算。
    • 主要用法:创建和操作多维数组、执行数值计算、线性代数运算、傅里叶变换等。
  2. Pandas:

    • 用途:Pandas是用于数据操作和分析的强大库,提供了高性能、灵活且易于使用的数据结构,如Series和DataFrame。
    • 主要用法:数据清洗、数据重塑、数据聚合、数据分组、数据合并、时间序列处理、数据可视化等。
  3. Matplotlib:

    • 用途:Matplotlib是Python中广泛使用的绘图库,提供了丰富的绘图功能,可创建各种类型的图表和可视化。
    • 主要用法:绘制线图、散点图、柱状图、饼图、箱线图、热图、3D图等。
  4. Seaborn:

    • 用途:Seaborn是基于Matplotlib的高级数据可视化库,提供了更简单的界面和更丰富的统计图表。
    • 主要用法:绘制统计图表、处理分类数据、绘制分布图、绘制相关性矩阵图、多变量分析等。
  5. SciPy:

    • 用途:SciPy是用于科学计算和技术计算的库,提供了许多数学、科学和工程计算的功能。
    • 主要用法:数值积分、优化、插值、信号处理、图像处理、统计分析、线性代数等。
  6. Statsmodels:

    • 用途:Statsmodels是用于统计建模和计量经济学的库,提供了广泛的统计模型和统计测试的功能。
    • 主要用法:线性回归、时间序列分析、假设检验、方差分析、逻辑回归、生存分析等。
  7. Scikit-learn:

    • 用途:Scikit-learn是机器学习库,提供了各种机器学习算法和工具,用于数据挖掘和数据分析。
    • 主要用法:分类、回归、聚类、降维、模型选择和评估、特征工程等。

这些库的用法可以根据具体需求而异,可以通过官方文档、教程和示例来学习和了解各个库的更多用法和功能。

 ----------------

  • Pandas主要用于以下方面的数据操作和分析:

  1. 数据结构:

    • Series:一维标记数组,类似于带标签的数组,可存储不同类型的数据。
    • DataFrame:二维表格数据结构,包含多个列,每列可以是不同的数据类型。
  2. 数据清洗:

    • 选择数据:根据条件或标签选择特定的行和列。
    • 缺失值处理:填充、删除或插值处理缺失值。
    • 异常值处理:识别和处理异常值。
    • 数据转换:应用函数、映射、替换和重命名列等。
  3. 数据重塑:

    • 重塑索引:重新设置索引或更改索引的层次结构。
    • 数据透视表:根据行和列的值聚合数据,并提供分组统计。
    • 堆叠和展开:在行和列之间转换数据的形状。
  4. 数据聚合和分组:

    • 分组操作:根据某些标准将数据分组,然后应用聚合函数(如求和、平均值、计数等)。
    • 滚动和展开窗口:执行滚动计算和窗口函数操作。
  5. 数据合并和连接:

    • 合并数据集:根据键将多个数据集水平或垂直地连接。
    • 连接操作:使用数据库风格的连接操作(如内连接、外连接等)。
  6. 时间序列处理:

    • 时间索引和重采样:将时间列设置为索引,对时间序列进行重采样和频率转换。
    • 移动窗口统计:执行滑动窗口的时间序列统计计算。
  7. 数据可视化:

    • 绘制图表:生成各种类型的图表,如线图、柱状图、散点图、箱线图等。
    • 交互式可视化:与其他库(如Matplotlib和Seaborn)结合使用,创建交互式图形。

Pandas提供了丰富的函数和方法来支持这些用法,同时还具备高性能和灵活性,使得数据操作和分析变得更加便捷和高效

 

import pandas as pd

# 创建Series
data = [1, 2, 3, 4, 5]
s = pd.Series(data)

# 选择数据
print(s[2])  # 获取索引为2的元素
print(s[1:4])  # 获取索引1到3的元素
import pandas as pd

# 创建DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)

# 选择数据
print(df['Name'])  # 获取Name列
print(df.loc[1])  # 获取索引为1的行数据
import pandas as pd

# 创建包含缺失值的DataFrame
data = {'A': [1, 2, None, 4],
        'B': [5, None, 7, 8]}
df = pd.DataFrame(data)

# 填充缺失值
df.fillna(0, inplace=True)
print(df)

# 删除包含缺失值的行
df.dropna(inplace=True)
print(df)
import pandas as pd

# 创建DataFrame
data = {'City': ['New York', 'London', 'Paris', 'London', 'Paris'],
        'Year': [2020, 2020, 2020, 2021, 2021],
        'Sales': [100, 200, 150, 300, 250]}
df = pd.DataFrame(data)

# 创建数据透视表
pivot_table = pd.pivot_table(df, values='Sales', index='City', columns='Year', aggfunc='sum')
print(pivot_table)
import pandas as pd

# 创建DataFrame
data = {'City': ['New York', 'London', 'Paris', 'London', 'Paris'],
        'Year': [2020, 2020, 2020, 2021, 2021],
        'Sales': [100, 200, 150, 300, 250]}
df = pd.DataFrame(data)

# 分组聚合操作
grouped = df.groupby('City').agg({'Sales': 'sum', 'Year': 'mean'})
print(grouped)
import pandas as pd

# 创建DataFrame
data1 = {'Name': ['Alice', 'Bob', 'Charlie'],
         'Age': [25, 30, 35]}
data2 = {'Name': ['Bob', 'Charlie', 'Dave'],
         'City': ['London', 'Paris', 'Berlin']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 合并DataFrame
merged = pd.merge(df1, df2, on='Name')
print(merged)
import pandas as pd
import matplotlib.pyplot as plt

# 创建DataFrame
data = {'Year': [2018, 2019, 2020, 2021],
        'Sales': [100, 200, 150, 300]}
df = pd.DataFrame(data)

# 绘制线图
df.plot(x='Year', y='Sales', kind='line')
plt.show()
import pandas as pd

# 创建DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)

# 根据条件选择行
selected_rows = df[df['Age'] > 30]
print(selected_rows)

# 根据条件选择列
selected_columns = df[['Name', 'City']]
print(selected_columns)
import pandas as pd

# 创建包含缺失值的DataFrame
data = {'A': [1, None, 3, None],
        'B': [5, 6, None, 8]}
df = pd.DataFrame(data)

# 填充缺失值
df_filled = df.fillna(0)  # 使用0填充缺失值
print(df_filled)

# 删除包含缺失值的行
df_dropped = df.dropna()  # 删除包含缺失值的行
print(df_dropped)

# 使用插值方法填充缺失值
df_interpolated = df.interpolate()  # 使用插值方法填充缺失值
print(df_interpolated)
import pandas as pd

# 创建DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 200, 35],  # 包含异常值
        'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)

# 识别异常值
outliers = df[df['Age'] > 100]
print(outliers)

# 处理异常值
df.loc[df['Age'] > 100, 'Age'] = 30  # 将异常值替换为特定值
print(df)
import pandas as pd

# 创建DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)

# 应用函数
df['Age'] = df['Age'].apply(lambda x: x * 2)  # 将Age列的值乘以2
print(df)

# 映射值
mapping = {'New York': 'USA', 'London': 'UK', 'Paris': 'France'}
df['Country'] = df['City'].map(mapping)  # 根据City列映射出Country列的值
print(df)

# 替换值
df['City'] = df['City'].replace('New York', 'NY')  # 将City列中的'New York'替换为'NY'
print(df)

# 重命名列
df.rename(columns={'Name': 'FullName'}, inplace=True)  # 将Name列重命名为FullName
print(df)
import pandas as pd

# 创建DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)

# 根据条件选择行
selected_rows = df[df['Age'] > 25]  # 选择Age列大于25的行
print(selected_rows)

# 根据条件选择列
selected_columns = df[['Name', 'City']]  # 选择Name列和City列
print(selected_columns)

# 使用loc和iloc选择行和列
selected_rows = df.loc[df['Age'] > 25]  # 使用loc选择满足条件的行
print(selected_rows)

selected_columns = df.loc[:, ['Name', 'City']]  # 使用loc选择指定的列
print(selected_columns)

selected_rows = df.iloc[[0, 2]]  # 使用iloc选择指定的行
print(selected_rows)

selected_columns = df.iloc[:, [0, 2]]  # 使用iloc选择指定的列
print(selected_columns)

在这个示例中,我们使用了条件选择和标签选择的两种方法。使用条件选择时,我们可以通过指定条件,例如df['Age'] > 25,来选择满足条件的行。使用标签选择时,我们可以使用方括号[]选择指定的列,例如df[['Name', 'City']]。此外,还可以使用lociloc方法选择行和列,其中loc使用标签进行选择,iloc使用索引位置进行选择。

import pandas as pd

# 创建DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)

# 根据条件选择行
selected_rows = df[df['Age'] > 25]
print(selected_rows)
# 输出:
#       Name  Age     City
# 1      Bob   30   London
# 2  Charlie   35    Paris

# 根据条件选择多个条件的行
selected_rows_multiple_conditions = df[(df['Age'] > 25) & (df['City'] == 'London')]
print(selected_rows_multiple_conditions)
# 输出:
#   Name  Age    City
# 1  Bob   30  London

# 根据标签选择列
selected_columns = df[['Name', 'City']]
print(selected_columns)
# 输出:
#       Name     City
# 0    Alice  New York
# 1      Bob   London
# 2  Charlie    Paris
import pandas as pd

# 创建包含缺失值的DataFrame
data = {'A': [1, 2, None, 4],
        'B': [5, None, 7, 8]}
df = pd.DataFrame(data)

# 填充缺失值
df_filled = df.fillna(0)  # 使用0填充缺失值
print(df_filled)
# 输出:
#      A    B
# 0  1.0  5.0
# 1  2.0  0.0
# 2  0.0  7.0
# 3  4.0  8.0

# 删除包含缺失值的行
df_dropped = df.dropna()  # 删除包含缺失值的行
print(df_dropped)
# 输出:
#      A    B
# 0  1.0  5.0

# 插值处理缺失值
df_interpolated = df.interpolate()  # 使用插值方法填充缺失值
print(df_interpolated)
# 输出:
#      A    B
# 0  1.0  5.0
# 1  2.0  6.0
# 2  3.0  7.0
# 3  4.0  8.0

在示例代码中,我们创建了一个包含缺失值的DataFrame。然后我们展示了三种常见的缺失值处理方法:

  • 使用填充方法(fillna)可以将缺失值替换为指定的值,这里我们使用0进行填充。
  • 使用删除方法(dropna)可以删除包含缺失值的行,这样会丢失对应的数据。
  • 使用插值方法(interpolate)可以根据已知的值推断并填充缺失值,这里我们使用线性插值进行填充
import pandas as pd

# 创建DataFrame
data = {'Age': [25, 30, 35, 150]}
df = pd.DataFrame(data)

# 识别异常值
outliers = df[(df['Age'] < 0) | (df['Age'] > 100)]
print(outliers)
# 输出:
#     Age
# 3   150

# 处理异常值
df['Age'] = df['Age'].clip(lower=0, upper=100)  # 将异常值截断为指定范围
print(df)
# 输出:
#    Age
# 0   25
# 1   30
# 2   35
# 3  100

在示例代码中,我们创建了一个包含异常值的DataFrame。然后我们展示了两种常见的异常值处理方法:

  • 识别异常值:使用条件语句来筛选出超过指定范围的值。
  • 处理异常值:使用clip方法将超过指定范围的值截断为指定范围内的值,这里我们将超过0到100范围之外的值截断为0和100。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas是用于数据操作和分析的强大库 的相关文章

随机推荐

  • (转)Macos安装java环境,快速切换Java版本

    转自 Macos安装java环境 快速切换Java版本 baby shark的博客 CSDN博客 macos切换java版本 安装Java8 java11 java8版本我习惯使用openjdk1 8 java11版本我习惯使用openjd
  • 正交解调---通过定时器调制两个相位差为90°的PWM波用于正交解调

    调制两个相位差为90 的PWM波 一 掌握PWM的两种输出模式 1 PWM边沿对齐模式 2 PWM中心对齐模式 二 通过HAL库的编程思想调制PWM波 1 调制频率为1 2KHz的PWM波 两个波形相位差为90 HAL库配置1 原波形 HA
  • Unity学习笔记:设置层级的几种方法、对象几种消失的区别

    Unity学习笔记 设置层级的几种方法 1 设置层级的几种方法 一种是使用sortingLayerName 另外一种是这样 sortingLayerID 2 对象几种消失的区别 https blog csdn net cbbbc artic
  • 《MySQL必知必会》 语法学习笔记以及拓展

    文章目录 第一部分 基本语句 检索语句 select 限制 limit 排序检索数据 order by desc 过滤数据where 组合过滤 and or in not 通配符过滤 正则表达式 REGEXP 区分大小写 匹配 与LIKE的
  • 两大错误

    生活和生意当中有两大错误 第一是缺少思考的情况下鲁莽行事 二是根本不采取任何的行动 原BEA公司大股东Carl Celian Icahn
  • 关于两道java面试题

    1 public static void main String args Thread t new Thread Override public void run System out println aaa t run System o
  • geneid/genesymbol/ensemblid等之间的转换

    在基因注释时 难免碰到各种GENE在不同数据库之间的ID转换 例如 Ensembl ID 转Entrez ID 或者Entrez ID与GENE Symbol之间的转换 这里介绍一下常用的三个在线网站 DAVID bioDBnet Ense
  • python敏感字替换_Python敏感词替换成*

    敏感词文本文件 filtered words txt 当用户输入敏感词语 则用星号 替换 例如当用户输入 北京是个好城市 则变成 是个好城市 filtered words txt filtered words txt coding utf
  • U盘插上就让格式化是坏了吗?数据怎么恢复

    U盘插上就让格式化是坏了吗 当您遇到U盘插上后提示需要格式化的情况时 不要慌张 这种情况并不一定意味着U盘已经坏了 下面我们一起来了解下如何恢复里面的数据 并解决U盘提示格式化的问题 U盘一插上就提示格式化是什么原因 许多人可能会有一个困惑
  • springboot整合spring security + MybatisPlus入门

    springboot整合spring security入门 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架 它是用于保护基于Spring的应用程序的实际标准 Spring Security是一个框架 致力于
  • JDBC与PostgreSQL(三):存储过程和函数

    目录 一 过程化SQL简介 二 存储过程 三 函数 一 过程化SQL简介 SQL的一大优点就是高度非过程化 即开发人员只要面向结果编程 而无需关注具体的实现细节 然而高度非过程化使SQL语言缺少具体的业务逻辑控制功能 因此嵌入式SQL和过程
  • LeetCode 1812. 判断国际象棋棋盘中一个格子的颜色

    给你一个坐标 coordinates 它是一个字符串 如a1 b6 表示国际象棋棋盘中一个格子的坐标 下图是国际象棋棋盘示意图 如果所给格子的颜色是白色 请你返回 true 如果是黑色 请返回 false 给定坐标一定代表国际象棋棋盘上一个
  • 使用stata完成毕业实证论文的基础操作(上)

    想起本科毕业论文时要用 Stata 跑实证却一点都不会的痛苦 这学期学明白了一点 因此写个帖子帮助一点都不懂的小白上手使用 Stata 本文9000余字 非常详细地介绍了最基础的命令 上篇内容包括 Stata 简介 标签命名 格式设置 统计
  • 没有电商巨头有钱,又要挑战双十一流量高峰,一次低成本、高质量的大促是如何做到的?

    今年7月初 易车网数据库负责人田震愈发焦虑 此时 离易车818汽车狂欢节正式开幕只剩一月有余 但数据库压力测试结果并不理想 818汽车狂欢节乃易车网首次大促活动 并且采用台网互动的直播形式 涉及数据库的应用场景颇多 如实时数据看板 台网互动
  • 05libevent库下未决与非未决的解释

    05libevent库下未决与非未决的解释 以下是关于libevent学习的相关文章 01libevent库的下载与安装并且测试是否安装成功 02libevent库的整体框架思想 03libevent下通信的主要函数 04libevent库
  • mysql的SQL用法及Navicat的相关使用

    以下语法均在mysql 8 0下 一 建立约束 数据库中约束分为一下几种 主键约束 Primary Key constraint 要求主键列数据唯一 并且不允许为空 唯一约束 Unique constraint 要求该列唯一 允许为空 但只
  • 倾向得分匹配的stata命令_计量方法的适用条件汇总(二):倾向得分匹配

    独家揭秘 计量经济学的魅力与激情 陈强老师的高级计量现场班侧记 2019 5 1 如何学好高级计量 探秘陈强老师的高级计量及Stata现场班 2019 10 1 接上期推文 本期探讨倾向得分匹配的适用条件 倾向得分匹配 PSM 倾向得分匹配
  • 3、无人驾驶--路径规划算法:Floyd算法

    3 Floyd算法 1 算法简介 1 1 Floyd 佛洛依德 算法是解决给定的加权图中顶点间的最短路径的一种算法 可以正确处理有向图的最短路径问题 1 2 特点 Floyd算法是一种动态规划算法 稠密图效果最佳 节点间的连接权值可正可负
  • 模拟弱网测试方法总结

    我们测试某些需求 可能需要模拟弱网环境 下面介绍几种模拟弱网的方法 一 使用Fiddler 安装Fiddler 保证手机设备 笔记本IP都在同一个网段 Fiddler中在Rules Custom Rules中设置弱网的标准上传及下传10KB
  • Pandas是用于数据操作和分析的强大库

    Python中有许多流行的统计分析库 下面是其中一些主要的库及其主要用法 NumPy 用途 NumPy是Python中的数值计算库 提供多维数组对象和各种数学函数 用于高效处理大规模数据和执行数值计算 主要用法 创建和操作多维数组 执行数值