1、数据处理
下表是Pandas官方手册上给出的一张表格,表格描述的是Pandas中对各种数据文件类型的读、写函数,你可以直接在官方手册中找到:
1.1、数据加载
首先,我们需要将收集的数据加载到内存中,才能进行进一步的操作。pandas提供了非常多的读取数据的函数,分别应用在各种数据源环境中,我们常用的函数为:
- read_csv
- read_table
- read_sql
- read_excel
说明:
- read_csv与read_table默认使用的分隔符不同。
常用参数
无论是txt文件还是csv文件,在Pandas中都使用read_csv()方法读取,当然也使用同一个方法写入到文件,那就是to_csv()方法。
read_csv与read_table常用的参数:
- sep / delimiter 列分隔符,普通文本文件,应该都是使用结构化的方式来组织,才能使用dataframe
- header 文件中是否存储着生命列名的一行
- names 如果header=None,那么names必须制定!否则就没有列的定义了。
- index_col 读取文件读到的第几列作为 行索引
- usecols 读取文件的时候可能有很多列,我们只想要其中的部分列
使用注意: import pandas as pd
pd.read_csv(file, sep, header, names, index_col, usecols)
导入对应的第三方模块,忽略警告等,做一些准备操作;
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
print(np.__version__)
print(pd.__version__)
1.18.0
0.25.3默认读取
CSV TSV
C:逗号分隔的结构化文件 T:制表符分隔的文件
关于CSV已经形成了一种惯性认识:只要是普通的文本文件,并且是结构化的 所以不管是什么分隔符,都是CSV格式
狭义上,必须是逗号 但是现在一般都把结构化的普通文本文件,都是用CSV的方式来对待,区别仅仅是改一下分隔符而已
# 读取csv文件,返回一个DataFrame类型的对象。
# 在读取的时候,默认会将第一行记录当成标题。如果没有标题,我们可以指定header=None。
# read_csv默认使用逗号作为分隔符,我们可以使用sep或delimiter来指定分隔符。
df = pd.read_csv(r"F:\Pandas\student.csv", header=None, sep="\t")
display(df.head(3))
0095002,刘晨,女,19,IS195017,王风娟,女,18,IS295018,王一,女,19,IS指定列定义
# 默认会把第一行当做列名
df = pd.read_csv("student1.csv")
display(df.head(3))95002刘晨女19IS095017王风娟女18IS195018王一女19IS295013冯伟男21CS# 如果header为None,read_csv默认会自己生成列标签。(0, 1, 2, 3……)。
# 我们可以通过names参数来指定列标签(标题)
df = pd.read_csv(r"student.csv", header=None,
names=["学号", "姓名", "性别", "年龄", "部门"])
display(df.head())
学号姓名性别年龄 部门095002刘晨女19IS195017王风娟女18IS295018王一女19IS395013冯伟男21CS495014王小丽女19CS指定行索引
# 对于行索引,默认会自动生成(0, 1, 2, 3 ……)如果我们需要自己指定某列充当行索引(例如,数据库,数据表中的主键)
# 我们可以使用index_col参数来进行设置。
df = pd.read_csv("student.csv", header=None, index_col=0,
names=["学号", "姓名", "性别", "年龄", "部门"])
display(df.head())
姓名性别年龄 部门学号95002刘晨女19IS95017王风娟女18IS95018王一女19IS95013冯伟男21CS95014王小丽女19CS指定合法数据列
# 我们可以使用usecols来控制需要哪些列。如果某列充当索引列(index_col),则充当索引列的标签,也需要指定在usecols中。
df = pd.read_csv("student.csv", header=None, index_col=2,
usecols=[2, 3, 4],
names=["学号", "姓名", "性别"])
display(df.head())
学号姓名性别IS女19IS女18IS女19CS男21CS女19从数据库中读取数据。与read_csv相同,也会返回DataFrame对象。
pandas除了能读取文件数据之外还能读取很多其他系统的数据
比如mysql,这儿为了做测试方便,使用一个轻量级的数据库来进行测试! 这个数据库叫做 sqllite 这是一个轻量级的数据库。不用安装! 立即使用!
关于RDBMS系统: 轻量级:sqllite 中量级:mysql 重量级:oracle
使用统一的方式:JDBC的方式
import sqlite3
# import pymysql 默认已经安装了sqlite3 所以直接就可以使用!
con = sqlite3.connect("test.db")
con.execute("drop table if exists person")
con.commit()
# 创建数据表
con.execute("create table person(id int primary key, name varchar(30), age int)")
# 向表中插入数据
con.execute("insert into person(id, name ,age) values(22, 'sk', 17)")
con.execute("insert into person(id, name ,age) values(33, 'zs', 18)")
# 从数据库中读取数据,sql指定查询的数据(用来构造DataFrame)。con数据库的链接。
t = pd.read_sql("select id, name, age from person", con)
display(t)
idname age022sk17133zs18写入文件
DataFrame与Series对象的to_csv方法,可以将数据写入文件或者指定的数据流中。
- to_csv
常用参数
- sep 分隔符,默认是逗号
- header 是否写入标题行,默认为True。默认写入,就是列名
- na_rep 空值的表示,缺失值怎么写?
- index 是否写入行索引(简称为索引),默认为True。
- index_label 索引字段的名称 index.name = index.label
- columns 写入的字段,默认为全部写入。
指定一列nan,方便测试
df = pd.DataFrame(np.arange(15).reshape(3, 5))
df[5] = np.nan
df.columns = ["a1", "a2", "a3", "a4", "a5", "a6"]
df[["a5", "a6"]] = df[["a6", "a5"]]
display(df)
a1a2a3a4 a5 a600123NaN415678NaN9210111213NaN14指定分隔符
# 默认以逗号作为分隔符,可以使用sep来自定义分隔符。
df.to_csv("data1.csv", sep="-")指定是否写入header
# 默认情况会写入标题(行标签索引)。可以使用header进行设置是否写入标题。True,写入(默认),False不写入。
df.to_csv("data1.csv", header=False)指定nan的写出规则
# 默认情况下,空值不显示,我们可以自定义空值的显式效果(内容)。
df.to_csv("data1.csv", header=False, na_rep="空")指定是否写入行索引
# 行索引,默认写入,我们可以通过参数index来设置是否写入行索引。True,写入(默认), False,不写入。
df.to_csv("data1.csv", header=False, na_rep="空", index=False)指定是否写入行索引的名称
# 可以通过index_label来设置行索引的名称。
df.to_csv("data5.csv", index_label="index_name", na_rep="空")指定写出那些数据列
# 我们可以通过colomns列来设置那些列写入到文件中。默认为写入所有列。
df.to_csv("data1.csv", columns=["a2", "a4"],
header=False, na_rep="空", index=False)写出数据到内存
# to_csv 不仅可以写入硬盘文件中,也可以写入内存(类文件对象)中。【处理速度更快,性能更好】
# 类文件对象:像文件那样具有read,write等功能的对象。
# StringIO 处理文本类型,如果是文本格式,都是字符串类型可解析
# BytesIO 处理二进制类型,如果是图片,视频,音频等,都是二进制格式。没法使用字符串来解析
from io import StringIO, BytesIO
# 创建一个类文件对象
str_io = StringIO()
df.to_csv(str_io)
# 查看文件指针的位置
display(str_io.tell())
# 调整文件指针的位置。将指针调整到文件的最前端。
str_io.seek(0)
display(str_io.read())
# 可以调用getvalue方法取出StringIO对象中的数据。(不用调整指针,再去读取)
display(str_io.getvalue())
print(str_io.getvalue())
67',a1,a2,a3,a4,a5,a6\r\n0,0,1,2,3,,4\r\n1,5,6,7,8,,9\r\n2,10,11,12,13,,14\r\n'',a1,a2,a3,a4,a5,a6\r\n0,0,1,2,3,,4\r\n1,5,6,7,8,,9\r\n2,10,11,12,13,,14\r\n',a1,a2,a3,a4,a5,a6
0,0,1,2,3,,4
1,5,6,7,8,,9
2,10,11,12,13,,142、数据清洗
我们需要对数据进行一些预处理操作,才能用到后续的数据分析与机器学习中。这是因为,无论数据的来源为何处,我们都不可能保证数据一定是准确无误的。
数据清洗可以包含以下几方面内容:
- 处理缺失值
- 处理异常值
- 处理重复值
df = pd.read_csv("spider.csv", header=None)
display(df.head(5))
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...NaNNaN32015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...NaNNaN2.1、缺失值处理
发现缺失值
Pandas中,会将float类型的nan与None视为缺失值,我们可以通过如下方法来检测缺失值:
- info
- isnull
- notnull
说明:
- 判断是否存在空值,可以将isnull与any或all结合使用。
检测整体缺失值情况 df.info()
# 按照列来检测缺失值,首先可以调用info方法进行整体查看。
# info方法可以显示DataFrame中每列的相关信息。
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1396 entries, 0 to 1395
Data columns (total 5 columns):
0 1396 non-null object
1 1396 non-null object
2 1396 non-null object
3 1098 non-null float64
4 1098 non-null float64
dtypes: float64(2), object(3)
memory usage: 54.7+ KB
df.shape
(1396, 5)判断空值的情况
# 检测 空 值
display(df.isnull().head())
display(df[2].isnull().any()) # 只要结果为True,就表示这一列有 NaN 值,,有缺失值
display(df[3].isnull().any()) # 如果any函数的结果为false,表示没有缺失值
0123 40FalseFalseFalseFalseFalse1FalseFalseFalseFalseFalse2FalseFalseFalseTrueTrue3FalseFalseFalseFalseFalse4FalseFalseFalseTrueTrueFalseTrue# 检测 不为空 的值
display(df.notnull().head())
0123 40TrueTrueTrueTrueTrue1TrueTrueTrueTrueTrue2TrueTrueTrueFalseFalse3TrueTrueTrueTrueTrue4TrueTrueTrueFalseFalse丢弃缺失值
对于缺失值,我们可以将其进行丢弃处理(dropna)。
说明:
- how:指定dropna丢弃缺失值的行为,默认为any。all
- axis:指定丢弃行或者丢弃列(默认为丢弃行)。
- thresh:当非空数值达到该值时,保留数据,否则删除。 thresh = 10
- inplace:指定是否就地修改,默认为False。 是否就地操作
按照指定规则丢弃缺失值 how=?
df = pd.read_csv("spider.csv", header=None)
display(df.head())
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...NaNNaN32015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...NaNNaNdf.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1396 entries, 0 to 1395
Data columns (total 5 columns):
0 1396 non-null object
1 1396 non-null object
2 1396 non-null object
3 1098 non-null float64
4 1098 non-null float64
dtypes: float64(2), object(3)
memory usage: 54.7+ KB总结上面的信息: 这个df中的有 1396-1098行中的第3 4 列为NaN
# 处理空值。丢弃空值,使用dropna。
df1 = df.dropna()
df1.info()
# 这个行为表示: 把df中的 有缺失字段值的任意一行都删掉
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1098 entries, 0 to 1395
Data columns (total 5 columns):
0 1098 non-null object
1 1098 non-null object
2 1098 non-null object
3 1098 non-null float64
4 1098 non-null float64
dtypes: float64(2), object(3)
memory usage: 51.5+ KBdf.size
# 总元素个数: 1098 * 5 = 6980
6980df1.shape[0]
df1.shape[1]
5# 默认情况下,how的值为any,表示只要存在空值,就丢弃行(列),我们可以指定为all,表示所有值为空值时,才进行删除。
df.dropna(how="all", axis=0).info()
# 表示按照行来进行删除,如果某一行中,所有的字段都为NaN就删掉
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1396 entries, 0 to 1395
Data columns (total 5 columns):
0 1396 non-null object
1 1396 non-null object
2 1396 non-null object
3 1098 non-null float64
4 1098 non-null float64
dtypes: float64(2), object(3)
memory usage: 65.4+ KB丢弃 行或者 列 axis=?
df = pd.read_csv("spider.csv", header=None)
display(df.head())
# 处理空值。丢弃空值,使用dropna。
df.dropna().info()
# 默认情况下,how的值为any,表示只要存在空值,就丢弃行(列),我们可以指定为all,表示所有值为空值时,才进行删除。
df.dropna(how="all").info()
# 默认,存在空值,会丢弃行,我们可以指定丢弃列。(axis=0表示按行删除,axis=1表示按列删除。)
display(df.dropna(axis=1).head())
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...NaNNaN32015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...NaNNaN<class 'pandas.core.frame.DataFrame'>
Int64Index: 1098 entries, 0 to 1395
Data columns (total 5 columns):
0 1098 non-null object
1 1098 non-null object
2 1098 non-null object
3 1098 non-null float64
4 1098 non-null float64
dtypes: float64(2), object(3)
memory usage: 51.5+ KB
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1396 entries, 0 to 1395
Data columns (total 5 columns):
0 1396 non-null object
1 1396 non-null object
2 1396 non-null object
3 1098 non-null float64
4 1098 non-null float64
dtypes: float64(2), object(3)
memory usage: 65.4+ KB01 202015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌12015-8-24http://www.apinpai.com/我;张国荣;80;励志22015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...32015-4-2http://bj.qu114.com/my way;张敬轩;90;励志42015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...按照指定规则丢弃 thresh=? inplace=? axis=?
df = pd.read_csv("spider.csv", header=None)
display(df.head())
# 有时候,how的any与all可能都不太合适。any的条件太宽松,all又太严格。我们可以自定义删除的门槛。
# 通过thresh来指定(门槛)。指的是非空的数据至少要达到thresh指定的数量时,整个行(列)才会保留,否则就删除。
# 可以使用inplace来设置是否进行就地修改。默认为False。
df1 = df.dropna(thresh=4, inplace=False, axis=0).head(10)
display(df1)
# 表示,如果某一行中,不为NaN的字段个数 >= 4 那么就不删除了。
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...NaNNaN32015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...NaNNaN0123402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1732015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2752015-5-28http://www.favolist.com/屋顶;温岚;80;励志217.0903.2962015-8-1http://www.apinpai.com/小兔子乖乖;小蓓蕾组合;90;儿歌184.0473.0772015-8-6http://www.99inf.com/光辉岁月;beyond;80;励志72.01051.7382015-6-28http://www.qudee.com/逃脱;李玟;90;伤感123.0483.2392015-8-7http://www.alifenfen.com/星;邓丽君;80;励志257.01779.36102015-7-15http://www.waaku.com/我心是海洋;蔡琴;80;励志210.01240.49112015-4-5http://www.yifawang.cn/同道中人;张国荣;80;励志42.0963.85填充缺失值
我们也可以对缺失值进行填充(fillna)。
说明:
- value:填充所使用的值。可以是一个字典,这样就可以为DataFrame的不同列指定不同的填充值。
- method:指定前值(上一个有效值)填充(pad / ffill),还是后值(下一个有效值)填充(backfill / bfill)。
- limit:如果指定method,表示最大连续NaN的填充数量,如果没有指定method,则表示最大的NaN填充数量。
- inplace:指定是否就地修改,默认为False。
这些参数都很常用,联合起来控制进行替换的规则
df = pd.read_csv("spider.csv", header=None)
display(df.head())
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...NaNNaN32015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...NaNNaN根据指定默认值填充缺失值
# 填充值 fillna进行填充。
# 使用固定值来填充所有的列。
df1 = df.fillna(10000)
display(df1.head())
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...10000.010000.0032015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...10000.010000.00根据指定的字典来填充缺失值(key是列,value是填充的值)
# 可以提供一个字典,这样就能够为不同的列,填充不同的值。
# 字典的key指定索引,value指定填充值。
df2 = df.fillna({3: 5000, 4:1000})
display(df2.head())
# 不同的列,在一个df中的 基本上可以说肯定具有不同的意义,所以缺失值的样式也肯定不一样
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...5000.01000.0032015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...5000.01000.00向上填充,向下填充
df = pd.read_csv("spider.csv", header=None)
display(df.head())
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...NaNNaN32015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...NaNNaN# 我们可以使用method,来指定向前(后)填充。
# 此种情况下,主要应用是记录之间有着紧密的关联(趋势)。例如,房价,股票。
# 使用上一个有效值进行填充。
display(df.fillna(method="ffill").head(5))
# 第3行,第5行的值, 使用了 第2行, 第4行的同名列的值进行填充
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...273.01447.1732015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...52.0337.27# 使用下一个有效值进行填充。
display(df.fillna(method="bfill").head(6))
# 第3行,第5行的值, 使用了 第4行, 第6行的同名列的值进行填充
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...52.0337.2732015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...217.0903.2952015-5-28http://www.favolist.com/屋顶;温岚;80;励志217.0903.29df = pd.read_csv("spider.csv", header=None)
display(df.head(30))
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...NaNNaN32015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...NaNNaN52015-5-28http://www.favolist.com/屋顶;温岚;80;励志217.0903.2962015-8-1http://www.apinpai.com/小兔子乖乖;小蓓蕾组合;90;儿歌184.0473.0772015-8-6http://www.99inf.com/光辉岁月;beyond;80;励志72.01051.7382015-6-28http://www.qudee.com/逃脱;李玟;90;伤感123.0483.2392015-8-7http://www.alifenfen.com/星;邓丽君;80;励志257.01779.36102015-7-15http://www.waaku.com/我心是海洋;蔡琴;80;励志210.01240.49112015-4-5http://www.yifawang.cn/同道中人;张国荣;80;励志42.0963.85122015-12-22http://www.movie.com/bor/12386/《将错就错》;2015.3.5;2015.3.29;中国电影股份有限公司等;王宁;小沈阳,田...NaNNaN132015-6-29http://www.apinpai.com/借过;容祖儿;90;伤感16.01869.68142015-4-26http://info.tianya.cn最冷一天;陈奕迅;90;伤感259.0554.35152015-4-6http://www.apinpai.com/加油;林俊杰/mc hotdog;90;励志252.0644.22162015-7-27http://www.apinpai.com/firework;katy perry;90;励志71.0697.20172015-6-8http://beijing.faxinxi.cn/给所有知道我名字的人;赵传;80;励志174.01258.13182015-7-13http://www.denghuo.com/逃脱;李玟;90;伤感253.0333.04192015-12-15http://www.movie.com/dor/《少年班》;2015.6.19;2015.7.19;工夫影业;华谊兄弟;肖洋;孙红雷,周冬雨...NaNNaN202015-12-1http://www.movie.com/dor/《既然青春留不住》;2015.10.23;2015.11.22;杭州和润影视有限公司;田蒙;...NaNNaN212015-8-5http://www.waaku.com/永远不要说放弃;童安格;80;励志261.01353.83222015-5-31http://www.alifenfen.com/忘记拥抱;a-lin;80;伤感260.0112.41232015-12-26http://www.movie.com/dor/《少年班》;2015.6.19;2015.7.19;工夫影业;华谊兄弟;肖洋;孙红雷,周冬雨...NaNNaN242015-8-30http://www.qudee.com/屋顶;温岚;80;励志196.01847.63252015-4-20http://www.favolist.com/story of my life;bon jovi;90;励志214.01860.87262015-6-21http://www.denghuo.com/借我;谢春花;90;伤感272.0937.38272015-4-28http://www.wuhan58.com/index.phpfirework;katy perry;90;励志289.0501.72282015-3-19http://beijing.hand2hand.cn/太阳星辰;张学友;80;励志19.01802.64292015-5-1http://www.010y.com/一起走过的日子;刘德华;80;伤感174.0621.15# limit参数。如果指定method,则表示最多连续填充。
# 如果没有指定method,则表示总共填充。
display(df.fillna(method="bfill", limit=1).head(10))
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...52.0337.2732015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...217.0903.2952015-5-28http://www.favolist.com/屋顶;温岚;80;励志217.0903.2962015-8-1http://www.apinpai.com/小兔子乖乖;小蓓蕾组合;90;儿歌184.0473.0772015-8-6http://www.99inf.com/光辉岁月;beyond;80;励志72.01051.7382015-6-28http://www.qudee.com/逃脱;李玟;90;伤感123.0483.2392015-8-7http://www.alifenfen.com/星;邓丽君;80;励志257.01779.36display(df.fillna(value=50000, limit=2).head(10))
0123 402015-4-28http://www.apinpai.com/采蘑菇的小姑娘;小蓓蕾组合;90;儿歌216.01392.6812015-8-24http://www.apinpai.com/我;张国荣;80;励志273.01447.1722015-12-14http://www.movie.com/dor/《恶棍天使》;2015.12.24;2016.2.13;天津橙子映像传媒有限公司、北京光线影...50000.050000.0032015-4-2http://bj.qu114.com/my way;张敬轩;90;励志52.0337.2742015-12-19http://www.movie.com/dor/《失孤》;2015.3.20;2015.5.3;华谊兄弟传媒集团、源合圣影视、映艺娱乐;彭三...50000.050000.0052015-5-28http://www.favolist.com/屋顶;温岚;80;励志217.0903.2962015-8-1http://www.apinpai.com/小兔子乖乖;小蓓蕾组合;90;儿歌184.0473.0772015-8-6http://www.99inf.com/光辉岁月;beyond;80;励志72.01051.7382015-6-28http://www.qudee.com/逃脱;李玟;90;伤感123.0483.2392015-8-7http://www.alifenfen.com/星;邓丽君;80;励志257.01779.36