Python数据分析招式:pandas库过滤分组透视表-2

简介: Python数据分析招式:pandas库过滤分组透视表-2

相关: Python数据分析招式:pandas库提取清洗排序-1


要点:


数据的字符处理

数据的过滤

数据的分组

数据的透视表

引入数据

# -*- coding: utf-8 -*-
# @File    : 数据集的处理.py
# @Date    : 2018-06-03
import pandas as pd
file = "data/train.csv"
df = pd.DataFrame(pd.read_csv(file))
print(df.head(3))
"""
   PassengerId  Survived  Pclass    ...        Fare Cabin  Embarked
0            1         0       3    ...      7.2500   NaN         S
1            2         1       1    ...     71.2833   C85         C
2            3         1       3    ...      7.9250   NaN         S
[3 rows x 12 columns]
"""

1、数据集的字符处理

# 对列的处理
mapping ={
    'PassengerId': '乘客编号',
    'Survived':'是否获救',
    'Name':'姓名',
    'Pclass':'船舱等级','Sex':'性别',
    'Age':'年龄','SibSp':'兄弟姐妹数',
    'Parch':'父母小孩数','Ticket':'船票',
    'Fare':'船票费'
}
ret = df.rename(columns=mapping)
print(ret.head(3))
"""
   乘客编号  是否获救  船舱等级    ...         船票费 Cabin  Embarked
0     1     0     3    ...      7.2500   NaN         S
1     2     1     1    ...     71.2833   C85         C
2     3     1     3    ...      7.9250   NaN         S
[3 rows x 12 columns]
"""
# 对数据集里面的特定字符串进行替换
ret = df['Sex'].map({'female':'女','male':'男'})
print(ret.head(3))
"""
[3 rows x 12 columns]
0    男
1    女
2    女
Name: Sex, dtype: object
"""
# 对列的字符进行替换, 只保留数字部分
# contains,split,match,findall,endswith
df['Embarked']=df['Embarked'].replace(regex='[CS]', value='xxx')
print(df.head(3))
"""
   PassengerId  Survived  Pclass    ...        Fare Cabin  Embarked
0            1         0       3    ...      7.2500   NaN       xxx
1            2         1       1    ...     71.2833   C85       xxx
2            3         1       3    ...      7.9250   NaN       xxx
[3 rows x 12 columns]
"""

2、数据集的过滤

# 用逻辑表达式组合过滤 ==, !=
ret = df[(df['Sex']=='female')&(df['Age']>10)]
print(ret.head(3))
"""
   PassengerId  Survived  Pclass    ...        Fare Cabin  Embarked
1            2         1       1    ...     71.2833   C85       xxx
2            3         1       3    ...      7.9250   NaN       xxx
3            4         1       1    ...     53.1000  C123       xxx
[3 rows x 12 columns]
"""
# query函数
ret = df.query('Age==[10, 20]')
print(ret[["Name", "Age"]].head(3))
"""
                               Name   Age
12   Saundercock, Mr. William Henry  20.0
91       Andreasson, Mr. Paul Edvin  20.0
113         Jussila, Miss. Katriina  20.0
"""

3、数据的分类

# 用where函数
import numpy as np
ret=np.where(df['Age']>=18)
# apply函数
def convert_age(age):
    if age> 0 and age < 10:
        return "小孩"
    elif age < 30:
        return "大人"
    else:
        return "老人"
df["年龄分类"] = df['Age'].apply(convert_age)
print(df[["Name", "Age", "年龄分类"]].sample(3))
"""
                                             Name   Age 年龄分类
624                   Bowen, Mr. David John "Dai"  21.0   大人
880  Shelley, Mrs. William (Imanita Parrish Hall)  25.0   大人
471                               Cacic, Mr. Luka  38.0   老人
"""

4、 数据的切片和透视表

# groupby函数
print(df.groupby('Sex')[['Name', 'Sex']].count())
"""
 Name  Sex
Sex              
female   314  314
male     577  577
"""
# 对数据进行轴切片分析
ret = df.groupby(['Survived','Pclass'])['Age'].agg(['size','max','min','mean'])
print(ret)
"""
Survived Pclass                              
0        1         80  71.0   2.00  43.695312
         2         97  70.0  16.00  33.544444
         3        372  74.0   1.00  26.555556
1        1        136  80.0   0.92  35.368197
         2         87  62.0   0.67  25.901566
         3        119  63.0   0.42  20.646118
"""
# 数据透视表
ret = df.pivot_table(columns=['Sex'],index=['Survived','Pclass'],values='Age',
aggfunc={'Age':[np.mean,min,max]})
print(ret)
"""
                   max             mean               min       
Sex             female  male     female       male female   male
Survived Pclass                                                 
0        1        50.0  71.0  25.666667  44.581967   2.00  18.00
         2        57.0  70.0  36.000000  33.369048  24.00  16.00
         3        48.0  74.0  23.818182  27.255814   2.00   1.00
1        1        63.0  80.0  34.939024  36.248000  14.00   0.92
         2        55.0  62.0  28.080882  16.022000   2.00   0.67
         3        63.0  45.0  19.329787  22.274211   0.75   0.42
"""

相关文章
|
11月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
760 0
|
11月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
816 0
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
2324 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
12月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
1020 0
|
11月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
709 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
11月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
983 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
751 18
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
1067 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
922 0
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍了基于Python的剪贴板监控技术,结合clipboard-monitor库实现高效、安全的数据追踪。内容涵盖技术选型、核心功能开发、性能优化及实战应用,适用于安全审计、自动化办公等场景,助力提升数据管理效率与安全性。
414 0

热门文章

最新文章

推荐镜像

更多