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招,高手都在用的数据分析招式

相关文章
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by=&#39;A&#39;, ascending=False)`。`rank()`函数用于计算排名,如`df[&#39;A&#39;].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=[&#39;A&#39;, &#39;B&#39;], ascending=[True, False])`和分别对&#39;A&#39;、&#39;B&#39;列排名。
438 2
|
索引 Python
如何使用Python的Pandas库进行数据合并和拼接?
Pandas的`merge()`函数用于数据合并,如示例所示,根据&#39;key&#39;列对两个DataFrame执行内连接。`concat()`函数用于数据拼接,沿轴0(行)拼接两个DataFrame,并忽略原索引。
350 2
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名?
Pandas在Python中提供数据排序和排名功能。使用`sort_values()`进行排序,如`df.sort_values(by=&#39;A&#39;, ascending=False)`进行降序排序;用`rank()`进行排名,如`df[&#39;A&#39;].rank(ascending=False)`进行降序排名。多列操作可传入列名列表,如`df.sort_values(by=[&#39;A&#39;, &#39;B&#39;], ascending=[True, False])`。
436 6
|
索引 Python
如何使用Python的Pandas库进行数据合并和拼接?
【2月更文挑战第28天】【2月更文挑战第103篇】如何使用Python的Pandas库进行数据合并和拼接?
212 0
|
索引 Python
Python 教程之 Pandas(11)—— 索引和选择 series 的数据
Python 教程之 Pandas(11)—— 索引和选择 series 的数据
218 0
Python 教程之 Pandas(11)—— 索引和选择 series 的数据
|
索引 Python
如何在Python中,Pandas库实现对数据的时间序列分析?
Pandas在Python中提供强大的时间序列分析功能,包括:1) 使用`pd.date_range()`创建时间序列;2) 通过`pd.DataFrame()`将时间序列转为DataFrame;3) `set_index()`设定时间列作为索引;4) `resample()`实现数据重采样(如按月、季度);5) `rolling()`进行移动窗口计算,如计算移动平均;6) 使用`seasonal_decompose()`进行季节性调整。这些工具适用于各种时间序列分析场景。
282 0
|
数据挖掘 索引 Python
如何在Python中,Pandas库实现对数据的时间序列分析?
【4月更文挑战第21天】Pandas在Python中提供了丰富的时间序列分析功能,如创建时间序列`pd.date_range()`,转换为DataFrame,设置时间索引`set_index()`,重采样`resample()`(示例:按月`&#39;M&#39;`和季度`&#39;Q&#39;`),移动窗口计算`rolling()`(如3个月移动平均)以及季节性调整`seasonal_decompose()`。这些工具适用于各种时间序列数据分析任务。
275 2
|
机器学习/深度学习 数据可视化 搜索推荐
Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。
【7月更文挑战第5天】Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。流程包括数据获取、预处理、探索、模型选择、评估与优化,以及结果可视化。示例展示了用户行为、话题趋势和用户画像分析。Python的丰富生态使得社交媒体洞察变得高效。通过学习和实践,可以提升社交媒体分析能力。
318 1
|
数据采集 数据挖掘 数据处理
使用Python和Pandas处理CSV数据
使用Python和Pandas处理CSV数据
367 5
|
索引 Python
python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据
该文档详细介绍了如何使用Python的Pandas库处理图像数据集,并将其保存为CSV文件。示例数据集位于`test_data`目录中,包含5张PNG图片,每张图片名中的数字代表其标签。文档提供了将这些数据转换为CSV格式的具体步骤,包括不同格式的数据输入方法(如NumPy数组、嵌套列表、嵌套元组和字典),以及如何使用`pd.DataFrame`和`to_csv`方法保存数据。此外,还展示了如何读取CSV文件并访问其中的每一行和每一列数据,包括获取列名、指定列数据及行数据的操作方法。
781 1