对pandas进行数据预处理的实例讲解

参加kaggle数据挖掘比赛,就第一个赛题Titanic的数据,学习相关数据预处理以及模型建立,本博客关注基于pandas进行数据预处理过程。包括数据统计、数据离散化、数据关联性分析

引入包和加载数据

import pandas as pd
import numpy as np
train_df =pd.read_csv('../datas/train.csv') # train set
test_df = pd.read_csv('../datas/test.csv') # test set
combine = [train_df, test_df]

清洗数据

查看数据维度以及类型

缺失值处理

查看object数据统计信息

数值属性离散化

计算特征与target属性之间关系

查看数据维度以及类型

#查看前五条数据
print train_df.head(5)
#查看每列数据类型以及nan情况
print train_df.info()
# 获得所有object属性
print train_data.describe(include=['O']).columns 

查看object数据统计信息

#查看连续数值属性基本统计情况
print train_df.describe()
#查看object属性数据统计情况
print train_df.describe(include=['O'])
# 统计Title单列各个元素对应的个数
print train_df['Title'].value_counts()
# 属性列删除
train_df = train_df.drop(['Name', 'PassengerId'], axis=1) 

缺失值处理

# 直接丢弃缺失数据列的行
print df4.dropna(axis=0,subset=['col1']) # 丢弃nan的行,subset指定查看哪几列
print df4.dropna(axis=1) # 丢弃nan的列
# 采用其他值填充
dataset['Cabin'] = dataset['Cabin'].fillna('U')
dataset['Title'] = dataset['Title'].fillna(0)
# 采用出现最频繁的值填充
freq_port = train_df.Embarked.dropna().mode()[0]
dataset['Embarked'] = dataset['Embarked'].fillna(freq_port)
# 采用中位数或者平均数填充
test_df['Fare'].fillna(test_df['Fare'].dropna().median(), inplace=True)
test_df['Fare'].fillna(test_df['Fare'].dropna().mean(), inplace=True)

数值属性离散化,object属性数值化

# 创造一个新列,FareBand,将连续属性Fare切分成四份
train_df['FareBand'] = pd.qcut(train_df['Fare'], 4)
# 查看切分后的属性与target属性Survive的关系
train_df[['FareBand', 'Survived']].groupby(['FareBand'], as_index=False).mean().sort_values(by='FareBand', ascending=True)
# 建立object属性映射字典
title_mapping = {"Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Royalty":5, "Officer": 6}
dataset['Title'] = dataset['Title'].map(title_mapping)

计算特征与target属性之间关系

object与连续target属性之间,可以groupby均值

object与离散target属性之间,先将target数值化,然后groupby均值,或者分别条形统计图

连续属性需要先切割然后再进行groupby计算,或者pearson相关系数

print train_df[['AgeBand', 'Survived']].groupby(['AgeBand'], as_index=False).mean().sort_values(by='AgeBand', ascending=True)

总结pandas基本操作

”'
创建df对象
””'
s1 = pd.Series([1,2,3,np.nan,4,5])
s2 = pd.Series([np.nan,1,2,3,4,5])
print s1
dates = pd.date_range(“20130101”,periods=6)
print dates
df = pd.DataFrame(np.random.rand(6,4),index=dates,columns=list(“ABCD”))
# print df
df2 = pd.DataFrame({“A”:1,
‘B':pd.Timestamp(‘20130102'),
‘C':pd.Series(1,index=list(range(4)),dtype='float32'),
‘D':np.array([3]*4,dtype=np.int32),
‘E':pd.Categorical([‘test','train','test','train']),
‘F':'foo'
})
# print df2.dtypes
df3 = pd.DataFrame({'col1':s1,
     'col2':s2
})
print df3

'''
2.查看df数据
'''
print df3.head(2) #查看头几条
print df3.tail(3) #查看尾几条
print df.index #查看索引
print df.info() #查看非non数据条数
print type(df.values) #返回二元数组
# print df3.values
print df.describe() #对每列数据进行初步的统计
print df3
print df3.sort_values(by=['col1'],axis=0,ascending=True) #按照哪几列排序

'''
3.选择数据
'''
ser_1 = df3['col1']
print type(ser_1) #pandas.core.series.Series
print df3[0:2] #前三行
print df3.loc[df3.index[0]] #通过index来访问
print df3.loc[df3.index[0],['col2']] #通过行index,和列名来唯一确定一个位置
print df3.iloc[1] #通过位置来访问
print df3.iloc[[1,2],1:2] #通过位置来访问
print "==="
print df3.loc[:,['col1','col2']].as_matrix() # 返回nunpy二元数组
print type(df3.loc[:,['col1','col2']].as_matrix())

'''
4.布尔索引,过滤数据
'''
print df3[df3.col1 >2]
df4 = df3.copy()
df4['col3']=pd.Series(['one','two','two','three','one','two'])
print df4
print df4[df4['col3'].isin(['one','two'])]
df4.loc[:,'col3']="five"
print df4

'''
5.缺失值处理,pandas将缺失值用nan代替
'''
print pd.isnull(df4)
print df4.dropna(axis=0,subset=['col1']) # 丢弃nan的行,subset指定查看哪几列
print df4.dropna(axis=1) # 丢弃nan的列

以上这篇对pandas进行数据预处理的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Python 数据处理库 pandas 入门教程基本操作
  • 在Python中利用Pandas库处理大数据的简单介绍
  • 使用pandas对矢量化数据进行替换处理的方法
  • Python数据分析库pandas基本操作方法
  • pandas数据预处理之dataframe的groupby操作方法
  • Python遍历pandas数据方法总结
(0)

相关推荐

  • Python数据分析库pandas基本操作方法

    pandas是什么? 是它吗? ....很显然pandas没有这个家伙那么可爱.... 我们来看看pandas的官网是怎么来定义自己的: pandas is an open source, easy-to-use data structures and data analysis tools for the Python programming language. 很显然,pandas是python的一个非常强大的数据分析库! 让我们来学习一下它吧! 1.pandas序列 import nump

  • Python 数据处理库 pandas 入门教程基本操作

    pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有表现力的数据结构,目的是使"关系"或"标记"数据的工作既简单又直观.它旨在成为在Python中进行实际数据分析的高级构建块. 入门介绍 pandas适合于许多不同类型的数据,包括: 具有异构类型列的表格数据,例如SQL表格或Excel数据 有序和无序(不一定是固定频率)时间序列数据.

  • 使用pandas对矢量化数据进行替换处理的方法

    使用pandas处理向量化的数据,进行数据的替换时不仅仅能够进行字符串的替换也能够处理数字. 做简单的示例如下: In [4]: data = Series(range(5)) In [5]: data Out[5]: 0 0 1 1 2 2 3 3 4 4 dtype: int64 In [6]: data.replace(3,333) Out[6]: 0 0 1 1 2 2 3 333 4 4 dtype: int64 In [7]: data Out[7]: 0 0 1 1 2 2 3 3

  • Python遍历pandas数据方法总结

    前言 Pandas是python的一个数据分析包,提供了大量的快速便捷处理数据的函数和方法.其中Pandas定义了Series 和 DataFrame两种数据类型,这使数据操作变得更简单.Series 是一种一维的数据结构,类似于将列表数据值与索引值相结合.DataFrame 是一种二维的数据结构,接近于电子表格或者mysql数据库的形式. 在数据分析中不可避免的涉及到对数据的遍历查询和处理,比如我们需要将dataframe两列数据两两相除,并将结果存储于一个新的列表中.本文通过该例程介绍对pa

  • 在Python中利用Pandas库处理大数据的简单介绍

    在数据分析领域,最热门的莫过于Python和R语言,此前有一篇文章<别老扯什么Hadoop了,你的数据根本不够大>指出:只有在超过5TB数据量的规模下,Hadoop才是一个合理的技术选择.这次拿到近亿条日志数据,千万级数据已经是关系型数据库的查询分析瓶颈,之前使用过Hadoop对大量文本进行分类,这次决定采用Python来处理数据: 硬件环境         CPU:3.5 GHz Intel Core i7         内存:32 GB HDDR 3 1600 MHz         硬

  • pandas数据预处理之dataframe的groupby操作方法

    在数据预处理过程中可能会遇到这样的问题,如下图:数据中某一个key有多组数据,如何分别对每个key进行相同的运算? dataframe里面给出了一个group by的一个操作,对于"group by"操作,我们通常是指以下一个或多个操作步骤: l (Splitting)按照一些规则将数据分为不同的组: l (Applying)对于每组数据分别执行一个函数: l (Combining)将结果组合到一个数据结构中: 使用dataframe实现groupby的用法: # -*- coding

  • 对pandas进行数据预处理的实例讲解

    参加kaggle数据挖掘比赛,就第一个赛题Titanic的数据,学习相关数据预处理以及模型建立,本博客关注基于pandas进行数据预处理过程.包括数据统计.数据离散化.数据关联性分析 引入包和加载数据 import pandas as pd import numpy as np train_df =pd.read_csv('../datas/train.csv') # train set test_df = pd.read_csv('../datas/test.csv') # test set

  • Python使用pandas处理CSV文件的实例讲解

    Python中有许多方便的库可以用来进行数据处理,尤其是Numpy和Pandas,再搭配matplot画图专用模块,功能十分强大. CSV(Comma-Separated Values)格式的文件是指以纯文本形式存储的表格数据,这意味着不能简单的使用Excel表格工具进行处理,而且Excel表格处理的数据量十分有限,而使用Pandas来处理数据量巨大的CSV文件就容易的多了. 我用到的是自己用其他硬件工具抓取得数据,硬件环境是在Linux平台上搭建的,当时数据是在运行脚本后直接输出在termin

  • vue.js与后台数据交互的实例讲解

    第一步:引入js库: <script src="../js/common/vue.min.js"></script> <script src="../js/common/vue-resource.js"></script> 前端代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti

  • java多线程数据分页处理实例讲解

    在数据的最终结果上,我们能够通过分类的方法,准备的筛选出不同类别结果的信息.这里我们发散一下思维,在Java中对于数据大量处理的,多线程是一个非常常见的代表,我们可以用分页来处理多线程的数据问题.下面我们对分类的类型进行了解,然后带来两种分页在多线程的逻辑. 1.常见的分页类型 传统的:采用传统的分页方式,可以明确的获取数据信息,如有多少条数据,分多少页显示等. 下拉式:采用下拉式的分页方式,一般无法获取明确的数据数量相关的信息,但在分页操作以后,仍然可以看到之前查询的数据. 2.分页式查询逻辑

  • python优化数据预处理方法Pandas pipe详解

    我们知道现实中的数据通常是杂乱无章的,需要大量的预处理才能使用.Pandas 是应用最广泛的数据分析和处理库之一,它提供了多种对原始数据进行预处理的方法. import numpy as np import pandas as pd df = pd.DataFrame({ "id": [100, 100, 101, 102, 103, 104, 105, 106], "A": [1, 2, 3, 4, 5, 2, np.nan, 5], "B":

  • Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)

    最近在弄一个项目分析的时候,看到有一个后缀为".sqlite"的数据文件,由于以前没怎么接触过,就想着怎么用python来打开并进行数据分析与处理,于是稍微研究了一下. SQLite是一款非常流行的关系型数据库,由于它非常轻盈,因此被大量应用程序采用. 像csv文件一样,SQLite可以将数据存储于单个数据文件,以便方便的分享给其他人员.许多编程语言都支持SQLite数据的处理,python语言也不例外. sqlite3是python的一个标准库,可以用于处理SQLite数据库. 用s

  • python 读取.csv文件数据到数组(矩阵)的实例讲解

    利用numpy库 (缺点:有缺失值就无法读取) 读: import numpy my_matrix = numpy.loadtxt(open("1.csv","rb"),delimiter=",",skiprows=0) 写: numpy.savetxt('2.csv', my_matrix, delimiter = ',') 可能遇到的问题: SyntaxError: (unicode error) 'unicodeescape' codec

  • NumPy.npy与pandas DataFrame的实例讲解

    用CSV格式来保存文件是个不错的主意,因为大部分程序设计语言和应用程序都能处理这种格式,所以交流起来非常方便.然而这种格式的存储效率不是很高,原因是CSV及其他纯文本格式中含有大量空白符;而后来发明的一些文件格式,如zip.bzip和gzip等,压缩率则有了显著提升. 首先导入模块: In [1]: import numpy as np In [2]: import pandas as pd In [3]: from tempfile import NamedTemporaryFile In [

  • 使用pandas批量处理矢量化字符串的实例讲解

    进行已经矢量化后的字符串数据,可以使用pandas的Series数据对象的map方法.这样,对于未经矢量化的数据也可以先进行数据的矢量化转换然后再进行相应的处理. 举例实现字符串数据的操作,编写代码如下: #!/usr/bin/python import numpy as np import pandas as pd from pandas import Series,DataFrame seriers_data = Series(['Hello','Python','Data','World'

  • python pandas库中DataFrame对行和列的操作实例讲解

    用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFrame ser = Series(np.arange(3.)) data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz')) data['w'] #选择表格中的'w'列,使用类字典属性,返回的是S

随机推荐