Python 中pandas索引切片读取数据缺失数据处理问题_python

来源:脚本之家  责任编辑:小易  

python pandas describe 怎么没有描述性统计了你遇到的问题一看就是少装了包。在windows下安装pandas,只安装pandas一个包显然是不够的,它并没有把用到的相关包都打进去,这点是很麻烦的,只有等错误信息出来后才知道少了哪些包。我总结了一下,一共需要安装如下包:pyparsing-2.0.2.win32-py2.7.exematplotllib-1.3.1.win32-py2.7.exeopenpyxl-openpyxl-5d2c0c8704d2.tar.gzsetuptools-3.8.1.win32-py2.7.exenumpy-MKL-1.8.1.win32-py2.7.exesix-1.7.3.win32-py2.7.exepython-dateutil-2.2.win32-py2.7.exewww.zgxue.com防采集请勿采集本网。

引入

  numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? numpy能够帮我们处理处理数值型数据,但是这还不够 很多时候,我们的数据除了数值之外,还有字符串,还有时间序列等 比如:我们通过爬虫获取到了存储在数据库中的数据 比如:之前youtube的例子中除了数值之外还有国家的信息,视频的分类(tag)信息,标题信息等 所以,numpy能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我们处理其他类型的数据。

1、代替是可以的,但不适合非专业人士 2、所以就你的用途而言,当然可以。但是关键在于,你需要学习Python这个语言,然后学习一些基本的编程思想,一些算法,再去解除pandas这样的以DataFrame为

什么是pandas?

Python(英语发音:/?pa?θ?n/),是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)

  pandas是一个Python软件包,提供快速,灵活和富于表现力的数据结构,旨在使使用“关系”或“标记”数据既简单又直观。它旨在成为在Python中进行实际,真实世界数据分析的基本高级构建块。此外,其更广泛的目标是成为任何语言中可用的最强大,最灵活的开源数据分析/操作工具。它已经朝着这个目标迈进了。

25%,50%和75%是对应的四分位数。四分位数(Quartile)是指在统计学中把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值。第一四分位数(Q1),又称“较小四分位数”,等于该样本中

pandas的常用数据类型

安装pandas 1.Anaconda 安装pandas、Python和SciPy最简单的方式是用Anaconda。Anaconda是关于Python数据分析和科学计算的分发包。2.Miniconda 使用Anaconda会安装一百多个依赖包,如果想灵活控制安装的

  1、Series 一维,带标签数组

要group by哪个字段?进行什么聚合操作?

  2、DataFrame 二维,Series容器

(1)Series创建

pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)

data:类数组,可迭代,字典或标量值,包含存储在系列中的数据。在0.23.0版中进行了更改:如果data是dict,则将为Python 3.6及更高版本维护参数顺序。

index:类数组或索引(1d)值必须是可散列的,并且与data的长度相同。允许使用非唯一索引值。如果未提供,则默认为RangeIndex(0,1,2,…,n)。如果同时使用了字典和索引序列,则索引将覆盖在字典中找到的键。

dtype:STR,numpy.dtype,或ExtensionDtype,可选

输出系列的数据类型。如果未指定,则将从data推断出来。

copy:bool,默认为False,copy输入数据。

import pandas as pdimport numpy as npt = pd.Series(np.arange(12),index= list("asdfghjklpoi"))print(t)print(type(t))

注意几个问题:pd.Series能干什么,能够传入什么数据类型让其变为series结构。index是什么,在什么位置,对于我们常见的数据库数据或者ndarray来说,index到底是什么如何给一组数据指定index。

c = {"name":"lishuntao","age":18,"gender":"boy"}t1 = pd.Series(c)print(t1)print(type(t1))print(t1["name"])print(t1["gender"])

从上面可以看出,通过字典创建一个Series,字典的键就是索引。

重新给其绑定其他的索引之后,如果能够对应的上,就取其值,如果不能,就为Nan。如图所示:

import numpy as npimport pandas as pda = {"a":12,"name":"lishuntao","c":"xiaoc","age":18,"gender":"man"}t1 = pd.Series(a)print(t1)print(type(t1))t2 = pd.Series(a,index=list("abcdf"))print(t2)

numpy中的nan为float,pandas会自动根据数据类型更改series的dtype类型。

Series切片和索引

import numpy as npimport pandas as pda = {"a":12,"name":"lishuntao","c":"xiaoc","age":18,"gender":"man"}t1 = pd.Series(a)print(t1)print(t1[:2])print(t1[1])print(t1[["a","c","gender"]])print(t1[0:5:2])

import numpy as npimport pandas as pda = np.arange(12)t1 = pd.Series(a)print(t1)print(t1[t1>9])

Series的索引和值

import numpy as npimport pandas as pda = np.arange(12)t1 = pd.Series(a)#print(t1)print(t1.index)print(t1.values)

import numpy as npimport pandas as pda = np.arange(12)t1 = pd.Series(a)print(t1)print(type(t1.index))print(type(t1.values))

Series对象本质上有两个数组构成,一个数组构成对象的键(index,索引),一个数组构成对象的值(values),键--->值。

ndarray的很多方法都可以运用与series类型,比如argmax,clip

series具有where方法,但是结果却不同(下面是官方文档给出)

Series.where(self,cond[,other,inplace,…])Replace values where the condition is False.

a = np.arange(12)t1 = pd.Series(a)print(t1)#替换条件是False的情况 下面两个结果一样print(t1.where((t1>8),1))print(pd.Series.where(t1,(t1>4),1))

pandas之读取外部数据

  现在假设我们有一个组关于狗的名字的统计数据,那么为了观察这组数据的情况,我们应该怎么做呢?

  

  数据来源:https://www.kaggle.com/new-york-city/nyc-dog-names/data

我们的这组数据存在csv中,我们直接使用pd. read_csv即可

import numpy as npimport pandas as pdt2 = pd.read_csv("F:\BaiduNetdiskDownload\youtube_video_data\dogNames2.csv")print(t2)print(type(t2))

和我们想象的有些差别,他是一个DataFrame,那么接下来我们就来了解这种数据类型

但是,还有一个问题:

对于数据库比如mysql或者mongodb中数据我们如何使用呢?

pd.read_sql(sql_sentence,connection)

那么,mongodb呢?(先用mongodb自己读出来,然后将它传入到DataFrame中,就可以实现读取)

(2)DataFrame的创建

pd.DataFrame(data,index,columns,dtype,copy)

参数比Series多了columns,从中可以看出这是列索引(Index or array-like Column labels to use for resulting frame. Will default to RangeIndex (0, 1, 2, ..., n) if no column labels are provided)

import numpy as npimport pandas as pdt2 = pd.DataFrame(np.arange(12).reshape(3,4))print(t2)

从上面我们可以看出DataFrame对象既有行索引,又有列索引

行索引:表明不同行,横向索引,叫index,0轴,axis=0

列索引:表明不同列,纵向索引,叫columns,1轴,axis=1

自定义索引标签:

t2 = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("WXYZ"))print(t2)

DataFrame的基础属性

t2 = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("WXYZ"))print(t2)print(t2.shape)#显示行数,列数print(t2.dtypes)#显示的是列数据类型print(t2.ndim)#数据维度2(0,1)print(t2.index)#行索引print(t2.columns)#列索引 Index(['W', 'X', 'Y', 'Z'], dtype='object')print(t2.values)#对象值,二维ndarray的数组

DataFrame整体情况查询

t2 = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("WXYZ"))print(t2)#print(t2.head())print(t2.head(1))#显示头几行,默认5行print(t2.tail(2))#显示末尾几行,默认5行print(t2.info())#相关信息浏览:行数,列数,列索引,列非空值个数,列类型,列类型,内存占用print(t2.describe())#快速综合统计结果:计数,均值,标准差,最大值,四分位数,最小值

动手:那么回到之前我们读取的狗名字统计的数据上,我们尝试一下刚刚的方法

那么问题来了:

肯定想知道使用次数最高的前几个名字是什么呢?

pd.DataFrame.sort_values(by="Count_AnimalName",ascending=False)#ascending=True升序排序 by是对那一列排序 输入列索引键t2 = pd.read_csv("F:\BaiduNetdiskDownload\youtube_video_data\dogNames2.csv")print(t2)t3 = t2.sort_values(by="Count_AnimalName",ascending=False)print(t3)

那么问题又来了:

如果我的数据有10列,我想按照其中的第1,第3,第8列排序,怎么办?

pandas之取行或者列

  刚刚我们知道了如何给数据按照某一行或者列排序,那么现在我们想单独研究使用次数前100的数据,应该如何做?

t2 = pd.read_csv("F:\BaiduNetdiskDownload\youtube_video_data\dogNames2.csv")print(t2)t3 = t2.sort_values(by="Count_AnimalName",ascending=False)print(t3[:100])

我们具体要选择某一列该怎么选择呢?t2[" Count_AnimalName "]

我们要同时选择行和不同列该怎么办?(和numpy类似)

pandas之loc取行数据

  1、t2.loc 通过标签索引行数据(标签)

print(t2.loc["a","W"])print(t2.loc["a",["W","Y"]])print(type(t2.loc["a",["W","Y"]]))print(t2.loc[["a","b"],["Z","Y"]])print(t2.loc[:"c",:"Y"])print(t2.loc["a":"b",["W","Z"]])

 2、t2.iloc 通过位置获取行数据(位置)

import numpy as npimport pandas as pdt2 = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("WXYZ"))print(t2)print(t2.iloc[0:2,0:4])print(t2.iloc[[0,2],[1,3]])t2.loc["a","Y"] = 100 #复制操作print(t2)t2.iloc[1:2,[1]] = 1000 #复制操作print(t2)

pandas之布尔索引(且,或,&,|,)

  回到之前狗的名字的问题上,假如我们想找到所有的使用次数超过800的狗的名字,应该怎么选择?

print(t2[t2["Count_AnimalName"]>800])

回到之前狗的名字的问题上,假如我们想找到所有的使用次数超过700并且名字的字符串的长度大于4的狗的名字,应该怎么选择?

print(t2[(t2["Row_Labels"].str.len()>4)&(t2["Count_AnimalName"]>700)])

pandas之字符串方法

缺失数据的处理:

  观察这组数据

  我们的数据缺失通常有两种情况: 一种就是空,None等,在pandas是NaN(和np.nan一样) 另一种是我们让其为0(蓝色框中)

  对于NaN的数据,在numpy中我们是如何处理的?

  在pandas中我们处理起来非常容易 判断数据是否为NaN:pd.isnull(df),pd.notnull(df)

  处理方式1:删除NaN所在的行列

    dropna (axis=0, how='any', inplace=False)

  处理方式2:填充数据,

    t.fillna(t.mean()),t.fiallna(t.median()),t.fillna(0)

   处理为0的数据:t[t==0]=np.nan 当然并不是每次为0的数据都需要处理 计算平均值等情况,nan是不参与计算的,但是0会

import numpy as npimport pandas as pdt2 = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("WXYZ"))#print(t2)t2.loc[:"b",["W","Y"]] = np.nanprint(t2)print(pd.isnull(t2))print(pd.notnull(t2))#print(t2.dropna(axis=0,how="all",inplace=False))#any只要含NaN就删除前面规定的行列,all需要的是行列全部为NAN才能删除#填充数据#print(t2.fillna(t2.mean()))print(t2)print(t2.fillna(t2.median()))print(t2.fillna(0))

总结

以上所述是小编给大家介绍的Python 中pandas索引切片读取数据缺失数据处理问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对真格学网网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

利用Python的pandas数据结构来读取excel表格的数据,部分代码如下:#-*- coding:utf-8 -*-import pandas as pdimport matplotlib.pyplot as pltcatering_data="catering_sale.xls"data=pd.read_excel(catering_data,index_col=u'日期')#读取数据,指定"日期"列为索引列大多数书上都是这样写的,但是在Python2.7上运行时出现错误。(没有在Python3.x版本试过)出现了如下问题:这里写图片描述使用help(pd.read_excel)发现参数中有必选32313133353236313431303231363533e78988e69d8331333366303739参数sheetname,加入到函数中,代码如下:#-*- coding:utf-8 -*-import pandas as pdimport matplotlib.pyplot as pltcatering_data="catering_sale.xls"data=pd.read_excel(catering_data,sheetname=0,index_col=u'日期')运行成功。sheetname=0 的意思是:读取xls文件中的第一个表格。(假设文件中有很多个表格)另外,也可以将文件转换成csv格式,就不需要这个参数了。代码如下:catering_data="catering_sale.csv"data=pd.read_csv(catering_data)追问不是很明白您的答案,我的这个代码在尝试print(df.head())时是成功的,但是在print(df.head()['成绩'][0:3])的时候出现keyerrow:成绩 和图片上的错误想知道是为什么内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • python pandas自定义函数的使用方法示例
  • python使用pandas读写excel实例解析
  • python3 pandas 操作列表实例详解
  • 在python中利用pandas库处理大数据的简单介绍
  • python中pandas.dataframe的简单操作方法(创建、索引、增添与删除)
  • python pandas常用函数详解
  • python中pandas.dataframe对行与列求和及添加新行与列示例
  • windows下python使用pandas模块操作excel文件的教程
  • python pandas dataframe 按列或者按行合并的方法
  • python科学计算之pandas详解
  • python 中pandas.read_excel详细介绍
  • python pandas rfm模型应用实例详解
  • 更新pip3与pyttsx3文字语音转换的实现方法
  • python的互斥锁与信号量详解
  • python生成指定数量的优惠码实操内容
  • python2比较当前图片跟图库哪个图片相似的方法示例
  • python之mse、mae、rmse的使用
  • python中时间模块的基本使用教程
  • 复化梯形求积分实例——用python进行数值计算
  • python文件的md5加密方法
  • python win32com 操作exce的l简单方法(必看)
  • python数据预处理 :数据抽样解析
  • 新手关于python中pandas函数的使用
  • python pandas中describe()各项含义及求值
  • 求助如何用pandas快速遍历DataFrame-Python论坛
  • 如何优雅的安装Python的pandas
  • python+pandas是否能代替excel+vba
  • python pandas dataframe的object怎么转换成python中的字符类型?
  • python pandas的describe的25%是什么意思
  • python pandas怎么用
  • python pandas groupby apply 正则表达式
  • python+pandas是否能代替excel+vba
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页python pandas自定义函数的使用方法示例python使用pandas读写excel实例解析python3 pandas 操作列表实例详解在python中利用pandas库处理大数据的简单介绍python中pandas.dataframe的简单操作方法(创建、索引、增添与删除)python pandas常用函数详解python中pandas.dataframe对行与列求和及添加新行与列示例windows下python使用pandas模块操作excel文件的教程python pandas dataframe 按列或者按行合并的方法python科学计算之pandas详解python 中pandas.read_excel详细介绍python pandas rfm模型应用实例详解更新pip3与pyttsx3文字语音转换的实现方法python的互斥锁与信号量详解python生成指定数量的优惠码实操内容python2比较当前图片跟图库哪个图片相似的方法示例python之mse、mae、rmse的使用python中时间模块的基本使用教程复化梯形求积分实例——用python进行数值计算python文件的md5加密方法python win32com 操作exce的l简单方法(必看)python数据预处理 :数据抽样解析python入门教程 超详细1小时学会python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解pycharm 使用心得(一)安装和首python strip()函数 介绍python 中文乱码问题深入分析python中使用xlrd、xlwt操作excepython科学计算环境推荐——anacpython逐行读取文件内容的三种方详解python中的json和字典dictpython机器学习理论与实战(六)支持向量python3实现二叉树的最大深度python的socket编程入门python如何以表格形式打印输出的方法示例python处理document文档保留原样式关于python中密码加盐的学习体会小结python 打印直角三角形,等边三角形,菱形200 行python 代码实现 2048 游戏python中shape计算矩阵的方法示例
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved