精华内容
下载资源
问答
  • 2020-11-26 09:10:50

    从网上看到一篇很有意思的文章,转载过来大家可以试一下

    002pc.com认为此文章对《python 填充空值 平均命令行看糗百》说的很在理。

    直接上代码吧#!/usr/bin/env python

    #coding:utf-8

    import urllib2

    import re

    class qiubai:

    def __init__(self,page=1):

    self.page=page

    def search(self,page):

    url = "http://www.qiushibaike.com/week/page/%s" % page

    re_qb = re.compile(r'detail.*?(.*?)<.*?title="(.*?)">s*(.*?)s*?<',re.DOTALL)

    html = urllib2.urlopen(url).read()

    my_qiubai = re_qb.findall(html)

    for i in range(0,19):

    for k in range(3):

    print my_qiubai[i][k]

    s = raw_input("回车继续")

    if s == "q":

    exit()

    else:

    page=int(page)+1

    print "-"*18 + "第" + str(page) + "页" + "-"*18

    self.search(page)

    print "-"*40

    def query(self):

    global p

    p = raw_input("输入要看的页数:")

    if p == "q":

    exit()

    elif not p.isdigit() or p =="0":

    self.query()

    else:

    print "-"*18 + "第" + p + "页" + "-"*18

    self.search(p)

    if __name__ == "__main__":

    print "-"*40

    print "糗百命令行版"

    print '输入"q"退出程序'

    print "-"*40

    qb=qiubai()

    qb.query()

    更多:python 填充空值 平均命令行看糗百

    https://www.002pc.comhttps://www.002pc.com/python/2203.html

    你可能感兴趣的命令行

    No alive nodes found in your cluster

    0踩

    0 赞

    Tags:命令行

    更多相关内容
  • 广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,... 了解以上概念,就不难理解none 与null的区别1)是不同的数据类型in: type(none)out:nonetype表示该值是一个空对象,空值python里一个特殊的值,用none表...

    o55g08d9dv.jpg广告关闭

    腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!

    整个数据类型也可以看做是一个”类“ 。每一种数据类型都是一个对象,也具有其自己的属性和方法。 了解以上概念,就不难理解none 与null的区别1)是不同的数据类型in: type(none)out:nonetype表示该值是一个空对象,空值是python里一个特殊的值,用none表示。 none不能理解为0,因为0是有意义的,而none是一个特殊的...

    4osco1r4yu.jpeg

    为了防止异常值与正常数据混淆,影响最终计算结果,常用的方法是将异常值置零或者置空。 置零的方法较为简单,本文主要介绍如果对python中的数据进行置空。 1.赋值为none对于一般数据,可以直接为其赋值为none。 i = 1i = none # int 型数据置空s = strings = none # 字符串型数据置空l = l =none # 列表中元素置空...

    推荐使用腾讯云 api 配套的 7 种常见的编程语言 sdk,已经封装了签名和请求过程,均已开源,支持 python、java、php、go、nodejs、.net、c++。 以云服务器查看实例列表(describeinstances)请求为例,当用户调用这一接口时,其请求参数可能如下:参数名称中文参数值 action方法名describeinstances secretid密钥...

    获取 python 版本的方法:linux shell$python -vpython 2. 7.11windows cmdd:> python -vpython 2. 7.11如果提示不是内部或者外部命令, 请先在 window 环境变量 path 里面添加上 python 的绝对路径。 生成客户端对象secretid=xxxxxx #替换为用户的 secretidsecretkey = xxxxxx#替换为用户的 secretkeyendpoint = ...

    注意: 您目前查阅的是历史版本 sdk 文档,已不再更新和维护,我们建议您查阅新版 sdk 文档。 开发准备相关资源python-sdk 项目 github 地址,欢迎贡献代码以及反馈问题。 pypi 项目 github 地址 。 (本版本 sdk 基于 json api 封装组成) 环境依赖python 2.7获取 python 版本的方法:linux shell $ python -vpython ...

    解压后依次执行以下命令安装 sdk。 $ cd tencentcloud-sdk-python $ python setup.py install 示例代码 说明:所有示例代码仅作参考,无法直接编译和运行...需要预先在环境变量中设置这两个值 # 您也可以直接在代码中写入密钥对,但需谨防泄露,不要将代码复制、上传或者分享给他人 # cam 密钥查询:https...

    在实现二叉树的代码时,使用递归调用,当给空叶子节点赋值的时候,发现只修改了局部变量。 因此研究了一下python中传值和传引用的问题。 实验实验一a = noneprint(id(a))b = noneprint(id(b)) 4321685368 4321685368结论: 结果指向同一块区域实验二def test(x): x = x+2; a = 2print(a) 2 结论: 没有改变原变量实验...

    45yanpnst4.png

    一、python循环语句程序一般情况下是按照顺序执行的 编程语言提供了各种控制结构,允许更复杂的执行路径 python中的循环语句有for和while但没有do while循环语句允许我们执行一个语句或语句组多次,下面是大多数编程语言中循环语句的一般形式: ? python提供了for循环和while循环(在python中没有do while循环) 循环...

    列表list的其值是的形式字典dictionary的值是{x:a, y:b, z:c}的形式元组tuple的值是(a,b,c)的形式所以,这些数据类型的变量,初始化为空值分别是:数值 digital_value = 0 字符串 str_value = “” 或 str_value = ”列表 list_value = [] 字典 ditc_value = {} 元组 tuple_value = () 补充知识:python none 与 ”...

    我有django 2.0运行,我从空表单字段中获取无值。 我认为这个字段应该提供一个空字符串: 模型: class footermenu(models.model): ... text_en = models.charfield(verbose_name=umenüpunkt (en), max_length=100,default=, blank=true, null=true) 型号表: class meta:model = footermenu exclude = (position, ...

    a = pythonprint(hello, a or world)b =print(hello, b or world)(hello, python)(hello, world)这是因为在输出的时候,判断 a or world ,当 a 为 true 的时候,会输出 a ,同样的道理,当 b = 的时候,也就是 b 为 false, 这个时候会输出后面为真的内容。 也就是 world 。 这主要是因为在 python 中,把 0 ,空...

    我正在使用map处理python3.6的列表: def calc(num): if num > 5:return none return num * 2 r = map(lambda num: clac(num),range(1, 10))print(list(r)) # => 期望的结果是: 2、4、6、8、10. 当然,我可以使用过滤器来处理地图结果。 但是有什么方法可以让地图直接回到我想要的结果吗?...

    在实际的工作当中,我们难免要与空值打交道,相信不少初学者都会写出下面的代码:ifaisnone:dosomething.else:dotheotherthing.这样写看起来不错,但实际上会有问题。 一般来讲,python中会把下面几种情况当做空值来处理:nonefalse0,0.0,0l,(),[],{}其中none的特殊之处在于,它既不是数值0,也不是某个数据结构的空值...

    qmpvysewnk.png

    客户需求 查看销售人员不为空值的行 数据存储情况如图: ? 代码实现import pandas as pd data =pd.read_excel(test.xlsx,sheet_name=sheet1)datanota =data.notna()]print(datanota)输出结果 d:pythonanacondapython.exe d:pythontesteasdealtest.py 城市 销售金额 销售人员 0 北京 10000 张丽丽 1 上海50000 潇潇 2 ...

    z07sxzrts5.jpeg

    删除第5、6、7行存在空值的列print(d.dropna(axis=1,how=any,subset=))? 原地修改? #原地修改print(d.dropna(axis=0,how=any,inplace=true))print(==========)print(d)实例扩展:代码实现import pandas as pd data =pd.read_excel(test.xlsx,sheet_name=sheet1)datanota =data.notna()]print(datanota)输出结果 d...

    py2 vs py3print成为了函数,python2是关键字不再有unicode对象,默认str就是unicodepython3除号返回浮点数没有了long类型xrange不存在,range替代了xrange可以使用中文定义函数名变量名高级解包 和*解包限定关键字参数*后的变量必须加入名字=值raise fromiteritems移除变成items()yield from链接子生成器asyncio...

    5qqwa1vdwd.jpeg

    要使用 twilio,先要注册一个试用帐户,创建一个 twilio 电话号码并获取您的帐户凭证。 然后,您需要安装 twilio python 客户端库:? 下面是发送 sms 消息的 python 代码 (需用自己的帐户信息替换这些值):1from twilio.rest import client 2 3# twilio account details4twilio_account_sid = your twilio sid here ...

    pc5hva6mpb.gif

    要使用 twilio,先要注册一个试用帐户,创建一个 twilio 电话号码并获取您的帐户凭证。 然后,您需要安装 twilio python 客户端库:? 下面是发送 sms 消息的 python 代码 (需用自己的帐户信息替换这些值):1from twilio.rest import client 2 3# twilio account details4twilio_account_sid = your twilio sid here ...

    十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2true、false布尔值可以用and、or和not运算。 and or not空值是python里一个特殊的值,用none表示。 none不能理解为0,因为0是有意义的,而none是一个特殊的空值。 python还提供了列表、字典等多种数据类型2.print会依次打印每个字符串,遇到逗号“,”会输出...

    python - 去除list中的空字符method1:while in index: index.remove()method2:python内建filter()函数 - 过滤list filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素def not_empty(s):return s and s.strip() res = filter(not_empty, )# 结果...

    展开全文
  • Python中的空值和缺失值的处理

    千次阅读 2020-11-26 09:10:51
    空值python中一般表现为以下几种形式:(1)None(2)“ ”(3)NaN在数据预处理中,一般通过以下几种方法对空值进行判断:1、对于前两种空值,直接“=”就可以了2、对于第三种,NaN(not a number),在数学表示...

    空值在python中一般表现为以下几种形式:

    (1)None

    (2)“ ”

    (3)NaN

    在数据预处理中,一般通过以下几种方法对空值进行判断:

    1、对于前两种空值,直接“=”就可以了

    2、对于第三种,NaN(not a number),在数学表示上表示一个无法表示的数,这里一般还会有另一个表述inf,inf和nan的不同在于,inf是一个超过浮点表示范围的浮点数(其本质仍然是一个数,只是他无穷大,因此无法用浮点数表示,比如1/0),而nan则一般表示一个非浮点数(比如无理数):其判断方式为:

    (1)、numpy 里的NaN值的判断

    import numpy as np

    a = np.NaN

    print(type(a))

    #打印输出

    float

    print(a == np.NaN)

    print(a is np.NaN)

    #打印输出

    False

    True

    用上面两种方法判断NaN值都不太准确,最可靠的方法为math里的判断方法

    print(np.isnan(a))

    #打印输出

    True

    (2)、pandas里NaN值处理

    空值:在pandas中表示为“”

    缺失值:在dataFrame中为nan或者naT(缺失时间),在series中为none或者nan

    pandas中判断值是否为nan值得方法有:

    pd.isnull(np.nan)

    pd.notnull()

    与缺失值有关的函数

    df.dropna():删除NaN值

    df.fillna():填充NaN值

    df.isnull():判断是否为NaN值

    df.isna():判断是否为NaN值

    删除dataFrame中含有空值的行或者列:

    DataFrame.dropna(axis=0, how='any', thresh=None, subset=None,inplace=False)

    axis:维度,axis=0表示index行,axis=1表示columns列,默认为0

    how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列

    thresh:一行或一列中至少出现了thresh个才删除。

    subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)

    inplace:刷选过缺失值得新数据是存为副本还是直接在原数据上进行修改。

    举例说明:

    import numpy as np

    import pandas as pd

    def createDataFrame():

    d = {

    'a':[1,2,3,4,5],

    'b':[np.nan,4,5,6,0],

    'c':[1,2,3,6,7],

    'd':[5,3,2,4,5],

    'e':[6,7,4,5,8]

    }

    df = pd.DataFrame(d)

    result = df.dropna()

    print(result)

    if __name__ == '__main__':

    createDataFrame()

    #默认情况下,按行删除,只要有空值就会删除含空值的行

    #输出结果如下:

    a b c d e

    1 2 4.0 2 3 7

    2 3 5.0 3 2 4

    3 4 6.0 6 4 5

    4 5 0.0 7 5 8

    result = df.dropna(axis=1)

    #按列删除,删除含有nan的列,打印结果如下:

    a c d e

    0 1 1 5 6

    1 2 2 3 7

    2 3 3 2 4

    3 4 6 4 5

    4 5 7 5 8

    result = df.dropna(how='all') #默认按行

    # data.dropna(how='all',axis=1) 按列

    #所有行值全是nan时才删除,打印结果为:

    a b c d e

    0 1 NaN 1 5 6

    1 2 4.0 2 3 7

    2 3 5.0 3 2 4

    3 4 6.0 6 4 5

    4 5 0.0 7 5 8

    ###################################

    a = {

    'a': [np.nan, np.nan, np.nan],

    'b': [np.nan, np.nan, np.nan],

    'c': [np.nan, np.nan, np.nan]

    }

    df = pd.DataFrame(a)

    result = df.dropna(axis=0,thresh=2)

    print(result)

    #打印输出:

    #Empty DataFrame

    #Columns: [a, b, c]

    #Index: []

    result = df.dropna(thresh=2)

    #至少含有两个缺失值才删除

    a = {

    'a': [np.nan, np.nan, 4],

    'b': [np.nan, 2, 5],

    'c': [9, 3, 6]

    }

    df = pd.DataFrame(a)

    result = df.dropna(thresh=2)

    #打印输出:默认按行删除

    a b c

    1 NaN 2.0 3

    2 4.0 5.0 6

    result = df.dropna(subset=['a','b'])

    #删除subset中含有缺失值的行或列,默认为行,打印结果如下:

    a b c d e

    1 2 2.0 2 3 7

    2 3 3.0 3 2 4

    3 4 6.0 6 4 5

    4 5 0.0 7 5 8

    补充inf:

    print(np.inf == np.inf)

    print(np.inf == np.inf+10)

    #打印输出

    True

    True

    #即inf加上任意一个数还是inf

    展开全文
  • 01 生成数据表第一部分是生成数据表,常见的...获取外部数据python 支持从多种类型的数据导入。在开始使用 python 进行数据导入前需要先导入 pandas 库,为了方便起见,我们也同时导入 numpy 库。1import numpy a...

    01 生成数据表

    第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。 Excel 中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。

    获取外部数据

    python 支持从多种类型的数据导入。在开始使用 python 进行数据导入前需要先导入 pandas 库,为了方便起见,我们也同时导入 numpy 库。

    1import numpy as np2import pandas as pd

    导入数据表

    下面分别是从 excel 和 csv 格式文件导入数据并创建数据表的方法。代码是最简模式,里面有很多可选参数设置,例如列名称,索引列,数据格式等等。感兴趣的朋友可以参考 pandas 的

    官方文档。

    1df=pd.DataFrame(pd.read_csv('name.csv',header=1))2df=pd.DataFrame(pd.read_excel('name.xlsx'))

    创建数据表

    另一种方法是通过直接写入数据来生成数据表,excel 中直接在单元格中输入数据就可以,python 中通过下面的代码来实现。生成数据表的函数是 pandas 库中的 DateFrame 函数,数据表一共有 6 行数据,每行有 6 个字段。在数据中我们特意设置了一些 NA 值和有问题的字段,例如包含空格等。后面将在数据清洗步骤进行处理。后面我们将统一以 DataFrame 的简称 df 来命名数据表。

    1df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],2 "date":pd.date_range('20130102', periods=6),3 "city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],4 "age":[23,44,54,32,34,32],5 "category":['100-A','100-B','110-A','110-C','210-A','130-F'],6 "price":[1200,np.nan,2133,5433,np.nan,4432]},7 columns =['id','date','city','category','age','price'])

    这是刚刚创建的数据表,我们没有设置索引列,price 字段中包含有 NA 值,city 字段中还包含了一些脏数据。

    df

    02 数据表检查

    第二部分是对数据表进行检查,python 中处理的数据量通常会比较大,比如我们之前的文章中介绍的纽约出租车数据和 Citibike 的骑行数据,数据量都在千万级,我们无法一目了然的 了解数据表的整体情况,必须要通过一些方法来获得数据表的关键信息。数据表检查的另一个目的是了解数据的概况,例如整个数据表的大小,所占空间,数据格式,是否有空值和重复项和具体的数据内容。为后面的清洗和预处理做好准备。

    数据维度(行列)

    Excel 中可以通过 CTRL+向下的光标键,和 CTRL+向右的光标键来查看行号和列号。Python 中使用 shape 函数来查看数据表的维度,也就是行数和列数,函数返回的结果(6,6)表示数据表有 6 行,6 列。下面是具体的代码。

    1#查看数据表的维度2df.shape3(6, 6)

    数据表信息

    使用 info 函数查看数据表的整体信息,这里返回的信息比较多,包括数据维度,列名称,数据格式和所占空间等信息。

    1#数据表信息 2df.info() 3 4 5RangeIndex: 6 entries, 0 to 5 6Data columns (total 6 columns): 7id 6 non-null int64 8date 6 non-null datetime64[ns] 9city 6 non-null object10category 6 non-null object11age 6 non-null int6412price 4 non-null float6413dtypes: datetime64[ns](1), float64(1), int64(2), object(2)14memory usage: 368.0+ bytes

    查看数据格式

    Excel 中通过选中单元格并查看开始菜单中的数值类型来判断数据的格式。Python 中使用 dtypes 函数来返回数据格式。

    Dtypes 是一个查看数据格式的函数,可以一次性查看数据表中所有数据的格式,也可以指定一列来单独查看。

    1#查看数据表各列格式 2df.dtypes 3 4id int64 5date datetime64[ns] 6city object 7category object 8age int64 9price float6410dtype: object1112#查看单列格式13df['B'].dtype1415dtype('int64')

    查看空值

    Excel 中查看空值的方法是使用“定位条件”功能对数据表中的空值进行定位。“定位条件”在“开始”目录下的“查找和选择”目录中。

    查看空值

    Isnull 是 Python 中检验空值的函数,返回的结果是逻辑值,包含空值返回 True,不包含则返回 False。可以对整个数据表进行检查,也可以单独对某一列进行空值检查。

    1#检查数据空值2df.isnull()

    df_isnull

    1#检查特定列空值 2df['price'].isnull() 3 40 False 51 True 62 False 73 False 84 True 95 False10Name: price, dtype: bool

    查看唯一值

    Excel 中查看唯一值的方法是使用“条件格式”对唯一值进行颜色标记。Python 中使用 unique 函数查看唯一值。

    查看唯一值

    Unique 是查看唯一值的函数,只能对数据表中的特定列进行检查。下面是代码,返回的结果是该列中的唯一值。类似与 Excel 中删除重复项后的结果。

    1#查看 city 列中的唯一值2df['city'].unique()34array(['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '], dtype=object)

    查看数据表数值

    Python 中的 Values 函数用来查看数据表中的数值。以数组的形式返回,不包含表头信息。

    1#查看数据表的值 2df.values 3 4array([[1001, Timestamp('2013-01-02 00:00:00'), 'Beijing ', '100-A', 23, 5 1200.0], 6 [1002, Timestamp('2013-01-03 00:00:00'), 'SH', '100-B', 44, nan], 7 [1003, Timestamp('2013-01-04 00:00:00'), ' guangzhou ', '110-A', 54, 8 2133.0], 9 [1004, Timestamp('2013-01-05 00:00:00'), 'Shenzhen', '110-C', 32,10 5433.0],11 [1005, Timestamp('2013-01-06 00:00:00'), 'shanghai', '210-A', 34,12 nan],13 [1006, Timestamp('2013-01-07 00:00:00'), 'BEIJING ', '130-F', 32,14 4432.0]], dtype=object)

    查看列名称

    Colums 函数用来单独查看数据表中的列名称。

    1#查看列名称2df.columns34Index(['id', 'date', 'city', 'category', 'age', 'price'], dtype='object')

    查看前 10 行数据

    Head 函数用来查看数据表中的前 N 行数据,默认 head()显示前 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看前 3 行的数据。

    1`#查看前 3 行数据``df.head(``3``)`

    df_head(3)

    查看后 10 行数据

    Tail 行数与 head 函数相反,用来查看数据表中后 N 行的数据,默认 tail()显示后 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看后 3 行的数据。

    1`#查看最后 3 行``df.tail(``3``)`

    df_tail(3)

    03 数据表清洗

    第三部分是对数据表中的问题进行清洗。主要内容包括对空值,大小写问题,数据格式和重复值的处理。这里不包含对数据间的逻辑验证。

    处理空值(删除或填充)

    我们在创建数据表的时候在 price 字段中故意设置了几个 NA 值。对于空值的处理方式有很多种,可以直接删除包含空值的数据,也可以对空值进行填充,比如用 0 填充或者用均值填充。还可以根据不同字段的逻辑对空值进行推算。

    Excel 中可以通过“查找和替换”功能对空值进行处理,将空值统一替换为 0 或均值。也可以通过“定位”空值来实现。

    查找和替换空值

    Python 中处理空值的方法比较灵活,可以使用 Dropna 函数用来删除数据表中包含空值的数据,也可以使用 fillna 函数对空值进行填充。下面的代码和结果中可以看到使用 dropna 函数后,包含 NA 值的两个字段已经不见了。返回的是一个不包含空值的数据表。

    1#删除数据表中含有空值的行2df.dropna(how='any')

    df_dropna

    除此之外也可以使用数字对空值进行填充,下面的代码使用 fillna 函数对空值字段填充数字 0。

    1#使用数字 0 填充数据表中空值2df.fillna(value=0)

    我们选择填充的方式来处理空值,使用 price 列的均值来填充 NA 字段,同样使用 fillna 函数,在要填充的数值中使用 mean 函数先计算 price 列当前的均值,然后使用这个均值对 NA 进行填

    充。可以看到两个空值字段显示为 3299.5

    1#使用 price 均值对 NA 进行填充 2df['price'].fillna(df['price'].mean()) 3 40 1200.0 51 3299.5 62 2133.0 73 5433.0 84 3299.5 95 4432.010Name: price, dtype: float64

    df_nan

    清理空格

    除了空值,字符中的空格也是数据清洗中一个常见的问题,下面是清除字符中空格的代码。

    1#清除 city 字段中的字符空格2df['city']=df['city'].map(str.strip)

    大小写转换

    在英文字段中,字母的大小写不统一也是一个常见的问题。Excel 中有 UPPER,LOWER 等函数,python 中也有同名函数用来解决大小写的问题。在数据表的 city 列中就存在这样的问题。我们将 city 列的所有字母转换为小写。下面是具体的代码和结果。

    1#city 列大小写转换2df['city']=df['city'].str.lower()

    lower

    更改数据格式

    Excel 中通过“设置单元格格式”功能可以修改数据格式。Python 中通过 astype 函数用来修改数据格式。

    设置单元格格式

    Python 中 dtype 是查看数据格式的函数,与之对应的是 astype 函数,用来更改数据格式。下面的代码中将 price 字段的值修改为 int 格式。

    1#更改数据格式 2df['price'].astype('int') 3 40 1200 51 3299 62 2133 73 5433 84 3299 95 443210Name: price, dtype: int32

    更改列名称

    Rename 是更改列名称的函数,我们将来数据表中的 category 列更改为 category-size。下面是具体的代码和更改后的结果。

    1#更改列名称2df.rename(columns={'category': 'category-size'})

    df_rename

    删除重复值

    很多数据表中还包含重复值的问题,Excel 的数据目录下有“删除重复项”的功能,可以用来删除数据表中的重复值。默认 Excel 会保留最先出现的数据,删除后面重复出现的数据。

    删除重复项

    Python 中使用 drop_duplicates 函数删除重复值。我们以数据表中的 city 列为例,city 字段中存在重复值。默认情况下 drop_duplicates()将删除后出现的重复值(与 excel 逻辑一致)。增加 keep=’last’参数后将删除最先出现的重复值,保留最后的值。下面是具体的代码和比较结果。

    原始的 city 列中 beijing 存在重复,分别在第一位和最后一位。

    1df['city']20 beijing31 sh42 guangzhou53 shenzhen64 shanghai75 beijing8Name: city, dtype: object

    使用默认的 drop_duplicates()函数删除重复值,从结果中可以看到第一位的 beijing 被保留,最后出现的 beijing 被删除。

    1#删除后出现的重复值2df['city'].drop_duplicates()30 beijing41 sh52 guangzhou63 shenzhen74 shanghai8Name: city, dtype: object

    设置 keep=’last‘’参数后,与之前删除重复值的结果相反,第一位出现的 beijing 被删除,保留了最后一位出现的 beijing。

    1#删除先出现的重复值2df['city'].drop_duplicates(keep='last')31 sh42 guangzhou53 shenzhen64 shanghai75 beijing8Name: city, dtype: objec

    数值修改及替换

    数据清洗中最后一个问题是数值修改或替换,Excel 中使用“查找和替换”功能就可以实现数值的替换。

    查找和替换空值

    Python 中使用 replace 函数实现数据替换。数据表中 city 字段上海存在两种写法,分别为 shanghai 和 SH。我们使用 replace 函数对 SH 进行替换。

    1#数据替换2df['city'].replace('sh', 'shanghai')30 beijing41 shanghai52 guangzhou63 shenzhen74 shanghai85 beijing9Name: city, dtype: object

    本篇文章这是系列的第二篇,介绍第 4-6 部分的内容,数据表生成,数据表查看,和数据清洗。

    04 数据预处理

    第四部分是数据的预处理,对清洗完的数据进行整理以便后期的统计和分析工作。主要包括数据表的合并,排序,数值分列,数据分

    组及标记等工作。

    数据表合并

    首先是对不同的数据表进行合并,我们这里创建一个新的数据表 df1,并将 df 和 df1 两个数据表进行合并。在 Excel 中没有直接完成数据表合并的功能,可以通过 VLOOKUP 函数分步实现。在 python 中可以通过 merge 函数一次性实现。下面建立 df1 数据表,用于和 df 数据表进行合并。

    1#创建 df1 数据表2df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008],3"gender":['male','female','male','female','male','female','male','female'],4"pay":['Y','N','Y','Y','N','Y','N','Y',],5"m-point":[10,12,20,40,40,40,30,20]})

    df1

    使用 merge 函数对两个数据表进行合并,合并的方式为 inner,将两个数据表中共有的数据匹配到一起生成新的数据表。并命名为 df_inner。

    1#数据表匹配合并,inner 模式2df_inner=pd.merge(df,df1,how='inner')

    df_inner

    除了 inner 方式以外,合并的方式还有 left,right 和 outer 方式。这几种方式的差别在我其他的文章中有详细的说明和对比。

    1#其他数据表匹配模式2df_left=pd.merge(df,df1,how='left')3df_right=pd.merge(df,df1,how='right')4df_outer=pd.merge(df,df1,how='outer')

    设置索引列

    完成数据表的合并后,我们对 df_inner 数据表设置索引列,索引列的功能很多,可以进行数据提取,汇总,也可以进行数据筛选等。

    设置索引的函数为 set_index。

    1#设置索引列2df_inner.set_index('id')

    df_inner_set_index

    排序(按索引,按数值)

    Excel 中可以通过数据目录下的排序按钮直接对数据表进行排序,比较简单。Python 中需要使用 ort_values 函数和 sort_index 函数完成排序。

    排序

    在 python 中,既可以按索引对数据表进行排序,也可以看制定列的数值进行排序。首先我们按 age 列中用户的年龄对数据表进行排序。

    使用的函数为 sort_values。

    1#按特定列的值排序2df_inner.sort_values(by=['age'])

    sort_values

    Sort_index 函数用来将数据表按索引列的值进行排序。

    1#按索引列排序2df_inner.sort_index()

    sort_index

    数据分组

    Excel 中可以通过 VLOOKUP 函数进行近似匹配来完成对数值的分组,或者使用“数据透视表”来完成分组。相应的 python 中使用 where 函数完成数据分组。

    Where 函数用来对数据进行判断和分组,下面的代码中我们对 price 列的值进行判断,将符合条件的分为一组,不符合条件的分为另一组,并使用 group 字段进行标记。

    1#如果 price 列的值>3000,group 列显示 high,否则显示 low2df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')

    where

    除了 where 函数以外,还可以对多个字段的值进行判断后对数据进行分组,下面的代码中对 city 列等于 beijing 并且 price 列大于等于 4000 的数据标记为 1。

    1#对复合多个条件的数据进行分组标记2df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign']=1

    sign

    数据分列

    与数据分组相反的是对数值进行分列,Excel 中的数据目录下提供“分列”功能。在 python 中使用 split 函数实现分列。

    数据分列

    在数据表中 category 列中的数据包含有两个信息,前面的数字为类别 id,后面的字母为 size 值。中间以连字符进行连接。我们使用 split 函数对这个字段进行拆分,并将拆分后的数据表匹配回原数据表中。

    1#对 category 字段的值依次进行分列,并创建数据表,索引值为 df_inner 的索引列,列名称为 category 和 size2pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size'])

    split

    1#将完成分列后的数据表与原 df_inner 数据表进行匹配2df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)

    merge_1

    05 数据提取

    第五部分是数据提取,也是数据分析中最常见的一个工作。这部分主要使用三个函数,loc,iloc 和 ix,loc 函数按标签值进行提取,iloc 按位置进行提取,ix 可以同时按标签和位置进行提取。下面介绍每一种函数的使用方法。

    按标签提取(loc)

    Loc 函数按数据表的索引标签进行提取,下面的代码中提取了索引列为 3 的单条数据。

    1#按索引提取单行的数值 2df_inner.loc[3] 3id 1004 4date 2013-01-05 00:00:00 5city shenzhen 6category 110-C 7age 32 8price 5433 9gender female10m-point 4011pay Y12group high13sign NaN14category_1 11015size C16Name: 3, dtype: object

    使用冒号可以限定提取数据的范围,冒号前面为开始的标签值,后面为结束的标签值。下面提取了 0 到 5 的数据行。

    1#按索引提取区域行数值2df_inner.loc[0:5]

    df_inner_loc1

    Reset_index 函数用于恢复索引,这里我们重新将 date 字段的日期设置为数据表的索引,并按日期进行数据提取。

    1#重设索引2df_inner.reset_index()

    reset_index

    1#设置日期为索引2df_inner=df_inner.set_index('date')

    set_index_date

    使用冒号限定提取数据的范围,冒号前面为空表示从 0 开始。提取所有 2013 年 1 月 4 日以前的数据。

    1#提取 4 日之前的所有数据2df_inner[:'2013-01-04']

    按提起提取

    按位置提取(iloc)

    使用 iloc 函数按位置对数据表中的数据进行提取,这里冒号前后的数字不再是索引的标签名称,而是数据所在的位置,从 0 开始。

    1#使用 iloc 按位置区域提取数据2df_inner.iloc[:3,:2]

    iloc1

    iloc 函数除了可以按区域提取数据,还可以按位置逐条提取,前面方括号中的 0,2,5 表示数据所在行的位置,后面方括号中的数表示所在列的位置。

    1#使用 iloc 按位置单独提取数据2df_inner.iloc[[0,2,5],[4,5]]

    iloc2

    按标签和位置提取(ix)

    ix 是 loc 和 iloc 的混合,既能按索引标签提取,也能按位置进行数据提取。下面代码中行的位置按索引日期设置,列按位置设置。

    1#使用 ix 按索引标签和位置混合提取数据2df_inner.ix[:'2013-01-03',:4]

    ix

    按条件提取(区域和条件值)

    除了按标签和位置提起数据以外,还可以按具体的条件进行数据。下面使用 loc 和 isin 两个函数配合使用,按指定条件对数据进行提取 。

    使用 isin 函数对 city 中的值是否为 beijing 进行判断。

    1#判断 city 列的值是否为 beijing 2df_inner['city'].isin(['beijing']) 3 4date 52013-01-02 True 62013-01-05 False 72013-01-07 True 82013-01-06 False 92013-01-03 False102013-01-04 False11Name: city, dtype: bool

    将 isin 函数嵌套到 loc 的数据提取函数中,将判断结果为 Ture 数据提取出来。这里我们把判断条件改为 city 值是否为 beijing 和 shanghai。如果是就把这条数据提取出来。

    1#先判断 city 列里是否包含 beijing 和 shanghai,然后将复合条件的数据提取出来。2df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])]

    loc 按筛选条件提取

    数值提取还可以完成类似数据分列的工作,从合并的数值中提取出制定的数值。

    1category=df_inner['category'] 20 100-A 33 110-C 45 130-F 54 210-A 61 100-B 72 110-A 8Name: category, dtype: object 910#提取前三个字符,并生成数据表11pd.DataFrame(category.str[:3])

    category_str

    06 数据筛选

    第六部分为数据筛选,使用与,或,非三个条件配合大于,小于和等于对数据进行筛选,并进行计数和求和。与 excel 中的筛选功能和 countifs 和 sumifs 功能相似。

    按条件筛选(与,或,非)

    Excel 数据目录下提供了“筛选”功能,用于对数据表按不同的条件进行筛选。Python 中使用 loc 函数配合筛选条件来完成筛选功能。配合 sum 和 count 函数还能实现 excel 中 sumif 和 countif 函数的功能。

    筛选

    使用“与”条件进行筛选,条件是年龄大于 25 岁,并且城市为 beijing。筛选后只有一条数据符合要求。

    1#使用“与”条件进行筛选2df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']]

    使用“或”条件进行筛选,年龄大于 25 岁或城市为 beijing。筛选后有 6 条数据符合要求。

    1#使用“或”条件筛选2df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']].sort3(['age'])

    在前面的代码后增加 price 字段以及 sum 函数,按筛选后的结果将 price 字段值进行求和,相当于 excel 中 sumifs 的功能。

    1#对筛选后的数据按 price 字段进行求和2df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'),3['id','city','age','category','gender','price']].sort(['age']).price.sum()4519796

    使用“非”条件进行筛选,城市不等于 beijing。符合条件的数据有 4 条。将筛选结果按 id 列进行排序。

    1#使用“非”条件进行筛选2df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id'])

    在前面的代码后面增加 city 列,并使用 count 函数进行计数。相当于 excel 中的 countifs 函数的功能。

    1#对筛选后的数据按 city 列进行计数2df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']).city.count()34

    还有一种筛选的方式是用 query 函数。下面是具体的代码和筛选结果。

    1#使用 query 函数进行筛选2df_inner.query('city == ["beijing

    展开全文
  • python缺失值填充的几种方法

    千次阅读 2020-11-26 09:10:57
    常见的数据缺失填充方式分为很多种,比如删除法、均值法、回归法、KNN、MICE、EM等等。R语言包中在此方面比较全面,python稍差。python目前已有的两种常见的包,第一个是impyute,第二个是fancyimpute。比如...
  • 'embarked'])['age'].mean()) survived embarked 0 C 33.666667 Q 30.325000 S 30.203966 1 C 28.973671 Q 22.500000 S 28.113184 Name: age, dtype: float64 标签:missing-data,python,pandas,scikit-learn,...
  • python缺失值的填充

    千次阅读 2020-11-26 09:10:57
    今天分享的是在数据分析中处理缺失值的方法和python的实现。那为什么我们要对缺失值进行填充呢,想象你需要分析产品的销售和顾客数据,你注意到很多元组的属性否没有记录值,怎样才能为该属性天上缺失值呢?一般的...
  • 83|2016032| | 1| 20|null| 201602| | 1| 20|3003| 201601| | 1| 20|null| 201603| | 2| 40|2321| 201601| | 2| 30| 10| 201602| | 2| 61|null| 201601| +---+----+----+-------+ 我需要用现有值的平均值填充空值,...
  • python填充缺失数据

    2020-12-19 07:20:55
    fillna(value)参数:value说明:用于填充缺失值的标量值或字典对象#通过常数调用fillna书写方式:df.fillna(0) #用0替换缺失值#通过字典调用fillna书写方式:df.fillna({1:0.5,3:-1})fillna(value,inp...
  • 我在R中看到,分类数据的插补是通过DMwR、Caret之类的包直接完成的,...在有没有一种方法可以在python中对分类数据进行空值插补?在编辑:添加数据集的前几行。在>>> data_set.head()1stFlrSF 2ndFlrSF 3S...
  • Python 实现使用空值进行赋值 None

    千次阅读 2021-02-10 21:58:37
    0.摘要在Python中,尤其是数组当中,对于一些异常值往往需要进行特殊处理。为了防止异常值与正常数据混淆,影响最终计算结果,常用的方法是将异常值置零或者置空。置零的方法较为简单,本文主要简介如果对python中的...
  • 1、给定一个数据集...利用“全局常量”、“均值或者中位数”来填充缺失值。noise-data-1.txt:5.1 3.5 1.4 0.24.9 3 1.4 0.24.7 3.2 1.3 0.24.6 3.1 1.5 0.25 3.6 1.4 0.25.4 3.9 1.7 0.44.6 3.4 1.4 0.35 3.4 1...
  • 今天小编就为大家分享一篇python处理csv中的空值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • I want to fill empty cells with with previous row value if they start with number. For example, I haveText Text30 Text TextText TextText Text31 Text TextText Text31 Te...
  • Python Pandas - 向前填充前一列的值的整行自给例如:import pandas as pdimport numpy as npO = [1, np.nan, 5, np.nan]H = [5, np.nan, 5, np.nan]L = [1, np.nan, 2, np.nan]C = [5, np.nan, ...
  • python填充空值 介绍 (Introduction) Unlike traditional paper-based forms which are often a headache to complete by hand, PDF fillable forms are convenient and offer a broad range of user ...
  • pandas dataframe统计填充空值大全

    千次阅读 2022-03-22 11:05:18
    1.判断dataframe是否有空值 def t2(): df = pd.DataFrame({ 'name': ['lili', 'lucy','pegga','alin',np.nan], 'age': [18, 16, np.nan, 23, np.nan], 'salary': [np.nan, 300, np.nan, 1000, 800] }) df_...
  • python 列表空值赋值

    2021-12-09 10:04:03
    方法一:if语句 a=['H','E','L',' ','K','O'] for i in range(len(a)): if a[i] =='': a[i]='空值' 或者a.append(i)
  • PYTHON 判断 空值的方法

    千次阅读 2022-05-07 08:48:43
    1、数值类型空值判断: if not math.isnan(p[‘百度纬度’]): 2、字符类型判断空值 if xxx None,’’,0,[],{},() ,False都被判断为空值(not xxx等价) 如下代码输出所示, if xxx is None 需要区分[],{},‘’,()等...
  • 当测试或实际应用需要设置空值缺失值时可以用None 、np.nan 、pd.NaT 处理空值异常值有两种办法,一种是将空值行/列删除,一种是将替代空值 如何对空值计数 a=df.isnull() b=a[a==True] b.count()#用来计算nan数量 ...
  • python 特征缺失值填充

    2020-11-21 03:52:58
    我们在进行模型训练时,不可避免的会遇到某些特征出现空值的情况,下面整理了几种填充空值的方法1. 用固定值填充对于特征值缺失的一种常见的方法就是可以用固定值来填充,例如0,9999, -9999, 例如下面对灰度分这个...
  • I have a titanic Dataset. It has attributes and i was working manly on1.Age2.Embark ( from which port passengers embarked..There are total 3 ports..S,Q and C)3.Survived ( 0 for did not survived,1 for ...
  • fillna pandas除了可以drop含有空值的数据之外,当然也可以用来填充空值,事实上这也是最常用的方法。 我们可以很简单地传入一个具体的值用来填充: fillna会返回一个新的DataFrame,其中所有的Nan值会被替换成我们...
  • 83|2016032| | 1| 20|null| 201602| | 1| 20|3003| 201601| | 1| 20|null| 201603| | 2| 40|2321| 201601| | 2| 30| 10| 201602| | 2| 61|null| 201601| +---+----+----+-------+ 我需要用现有值的平均值填充空值,...
  • [pandas] DataFrame 填充空值的方法

    千次阅读 2021-09-09 08:08:27
    DataFrame 填充空值的方法 # 直接0值填充 df3.fillna(value=0) # 用前一行的值填充 df.fillna(method='pad',axis=0) # 用后一列的值填充 df.fillna(method='backfill',axis=1)
  • 除了删除空值,还有一种处理空值的方法是填充(Imputation)。让我们看看在revenue_millions列中填充缺失的值。首先,将该列提取到变量中:revenue = movies_df['revenue_millions']使用DataFrame['列名']可以获取1列...
  • 主要介绍了python pandas通过fillna方法实现部分自动填充功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • python 字符串填充0

    千次阅读 2019-06-19 15:30:29
    python中有一个zfill方法用来给字符串前面补0,非常有用 n="123" s=n.zfill(5) asserts=="00123" zfill()也可以给负数补0 n="-123" s=n.zfill(5) asserts=="-0123" 对于纯数字,我们也可以通过格式化...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,948
精华内容 3,979
关键字:

python填充空值

友情链接: dsk04n.rar