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

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

要点:


数据的基本处理

数据的提取

数据的初步清洗

数据的排序

泰坦尼克数据集下载地址:

地址1(需要注册): https://www.kaggle.com/c/titanic/data

地址2(百度网盘): https://pan.baidu.com/s/1Vp0QmVLu43_Hb9jHR2FKXg

密码: rdfr


导入数据

# -*- coding: utf-8 -*-
# @File    : 泰坦尼克数据分析.py
# @Date    : 2018-06-03
import numpy as np
import pandas as pd
file = "data/train.csv"
df = pd.DataFrame(pd.read_csv(file))

1、数据的基本处理

#  形状
print(df.shape)
# (891, 12)
# 查看前3行
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]
"""
# 查看后3行
print(df.tail(3))
"""
     PassengerId  Survived  Pclass    ...      Fare Cabin  Embarked
888          889         0       3    ...     23.45   NaN         S
889          890         1       1    ...     30.00  C148         C
890          891         0       3    ...      7.75   NaN         Q
[3 rows x 12 columns]
"""
# 信息
print(df.info())
"""
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId    891 non-null int64
Survived       891 non-null int64
Pclass         891 non-null int64
Name           891 non-null object
Sex            891 non-null object
Age            714 non-null float64
SibSp          891 non-null int64
Parch          891 non-null int64
Ticket         891 non-null object
Fare           891 non-null float64
Cabin          204 non-null object
Embarked       889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB
None
"""
# 整体描述
print(df.describe())
"""
      PassengerId    Survived     ...           Parch        Fare
count   891.000000  891.000000     ...      891.000000  891.000000
mean    446.000000    0.383838     ...        0.381594   32.204208
std     257.353842    0.486592     ...        0.806057   49.693429
min       1.000000    0.000000     ...        0.000000    0.000000
25%     223.500000    0.000000     ...        0.000000    7.910400
50%     446.000000    0.000000     ...        0.000000   14.454200
75%     668.500000    1.000000     ...        0.000000   31.000000
max     891.000000    1.000000     ...        6.000000  512.329200
[8 rows x 7 columns]
"""
# 查看数据集的空值
print(df.isnull().sum())
"""
PassengerId      0
Survived         0
Pclass           0
Name             0
Sex              0
Age            177
SibSp            0
Parch            0
Ticket           0
Fare             0
Cabin          687
Embarked         2
dtype: int64
"""
# 唯一值
print(df["Pclass"].unique())
# [3 1 2]

2、数据的提取

# 按照索引的值提取数据
print(df.loc[630])
"""
PassengerId                                     631
Survived                                          1
Pclass                                            1
Name           Barkworth, Mr. Algernon Henry Wilson
Sex                                            male
Age                                              80
SibSp                                             0
Parch                                             0
Ticket                                        27042
Fare                                             30
Cabin                                           A23
Embarked                                          S
Name: 630, dtype: object
"""
# 取部分行和列 第二三四行和前5列
print(df.iloc[2:5, :5])
"""
   PassengerId   ...       Sex
2            3   ...    female
3            4   ...    female
4            5   ...      male
[3 rows x 5 columns]
"""
# 照条件提取  仓位为小于2的,并且性别为女性的数据
print(df[(df["Pclass"]<=2)&(df["Sex"]=="female")].head(3))
"""
   PassengerId  Survived  Pclass    ...        Fare Cabin  Embarked
1            2         1       1    ...     71.2833   C85         C
3            4         1       1    ...     53.1000  C123         S
9           10         1       2    ...     30.0708   NaN         C
[3 rows x 12 columns]
"""

3、数据的清洗

# 删除空值
print(df.shape)  # (891, 12)
ret = df.dropna(how="any")
print(ret.shape)  # (183, 12)
print(df.shape)  # (891, 12)
# 填充空值
ret = df.fillna(value=0)
print(df.loc[633])
print(ret.loc[633])
"""
PassengerId                              634
Survived                                   0
Pclass                                     1
Name           Parr, Mr. William Henry Marsh
Sex                                     male
Age                                      NaN
SibSp                                      0
Parch                                      0
Ticket                                112052
Fare                                       0
Cabin                                    NaN
Embarked                                   S
Name: 633, dtype: object
PassengerId                              634
Survived                                   0
Pclass                                     1
Name           Parr, Mr. William Henry Marsh
Sex                                     male
Age                                        0
SibSp                                      0
Parch                                      0
Ticket                                112052
Fare                                       0
Cabin                                      0
Embarked                                   S
Name: 633, dtype: object
"""
#用数据集里面的年龄均值来填充空值
ret = df['Age'].fillna(df['Age'].mean())
print(ret.shape)  # (891,)
# 对字符的处理,比如大小写的转换
print(df["Name"].map(str.upper).head(3))
"""
0                              BRAUND, MR. OWEN HARRIS
1    CUMINGS, MRS. JOHN BRADLEY (FLORENCE BRIGGS TH...
2                               HEIKKINEN, MISS. LAINA
Name: Name, dtype: object
"""
# 对字符串的快速映射转换
df['Pclass']=df['Pclass'].map({1:'一等舱',2:'二等舱',3:'三等舱'})
print(df.head(3))
"""
   PassengerId  Survived Pclass    ...        Fare Cabin  Embarked
0            1         0    三等舱    ...      7.2500   NaN         S
1            2         1    一等舱    ...     71.2833   C85         C
2            3         1    三等舱    ...      7.9250   NaN         S
[3 rows x 12 columns]
"""
# 对数据集中的数据格式的改变
print(df.dtypes)
"""
PassengerId      int64
Survived         int64
Pclass          object
Name            object
Sex             object
Age            float64
SibSp            int64
Parch            int64
Ticket          object
Fare           float64
Cabin           object
Embarked        object
dtype: object
"""
ret = df['Fare'].astype('int') #把原来的float64->int
print(ret.dtypes) # int32
# 更改列的名字
ret = df.rename(columns={'Survived':'是否获救'})
print(ret.head(3))
"""
   PassengerId  是否获救 Pclass    ...        Fare Cabin  Embarked
0            1     0    三等舱    ...      7.2500   NaN         S
1            2     1    一等舱    ...     71.2833   C85         C
2            3     1    三等舱    ...      7.9250   NaN         S
[3 rows x 12 columns]
"""
# 去掉重复值
# #比如我们想知道登船的类别,去掉所有重复的数据
ret = df['Embarked'].drop_duplicates()
print(ret)
"""
0       S
1       C
5       Q
61    NaN
Name: Embarked, dtype: object
"""
# 数据的代替,替换
df['Sex']=df['Sex'].replace('male','男')
print(df["Sex"].head(3))
"""
0         男
1    female
2    female
Name: Sex, dtype: object
"""

4、数据的排序

# 按照年龄进行降序排列
print(df.sort_values(by=['Age'],ascending=False)["Age"].head(3))
"""
630    80.0
851    74.0
493    71.0
Name: Age, dtype: float64
"""
# 按照index来排序
print(df.sort_index(ascending=False).head(3))
"""
     PassengerId  Survived Pclass    ...      Fare Cabin  Embarked
890          891         0    三等舱    ...      7.75   NaN         Q
889          890         1    一等舱    ...     30.00  C148         C
888          889         0    三等舱    ...     23.45   NaN         S
"""

相关文章
|
10天前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
49 20
|
1月前
|
XML JSON 数据库
Python的标准库
Python的标准库
173 77
|
30天前
|
算法 数据挖掘 索引
Pandas数据排序:单列与多列排序详解
本文介绍了Pandas库中单列和多列排序的方法及常见问题的解决方案。单列排序使用`sort_values()`方法,支持升序和降序排列,并解决了忽略大小写、处理缺失值和索引混乱等问题。多列排序同样使用`sort_values()`,可指定不同列的不同排序方向,解决列名错误和性能优化等问题。掌握这些技巧能提高数据分析效率。
64 9
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
135 4
数据分析的 10 个最佳 Python 库
|
1月前
|
XML JSON 数据库
Python的标准库
Python的标准库
56 11
|
2月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
162 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
1月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
83 8
|
1月前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
52 4
|
2月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
106 0
|
4月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
129 1