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
"""

相关文章
|
11天前
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
412 97
|
3月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
142 20
|
2月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
94 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
3月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
204 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
2月前
|
Web App开发 数据采集 数据安全/隐私保护
Selenium库详解:Python实现模拟登录与反爬限制的进阶指南
Selenium库详解:Python实现模拟登录与反爬限制的进阶指南
|
2月前
|
机器学习/深度学习 存储 数据可视化
这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
本书介绍了如何将Python与Excel结合使用,以提升数据分析和处理效率。内容涵盖Python入门、pandas库的使用、通过Python包操作Excel文件以及使用xlwings对Excel进行编程。书中详细讲解了Anaconda、Visual Studio Code和Jupyter笔记本等开发工具,并探讨了NumPy、DataFrame和Series等数据结构的应用。此外,还介绍了多个Python包(如OpenPyXL、XlsxWriter等)用于在无需安装Excel的情况下读写Excel文件,帮助用户实现自动化任务和数据处理。
|
1月前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
|
29天前
|
人工智能 Java 数据安全/隐私保护
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
85 28
|
1月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
1月前
|
Python
[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅
本文回顾了从模块导入变量和函数的方法,并通过一个求和程序实例,讲解了Python中输入处理、类型转换及异常处理的应用。重点分析了“明了胜于晦涩”(Explicit is better than implicit)的Python之禅理念,强调代码应清晰明确。最后总结了加法运算程序的实现过程,并预告后续内容将深入探讨变量类型的隐式与显式问题。附有相关资源链接供进一步学习。
39 4

热门文章

最新文章

下一篇
oss创建bucket