pandas包含两种最主要数据结构:序列(Series)和数据框(DataFrame)。
对于这两个数据结构,有两个最基本的概念:轴(Axis)和标签(Label),对于二维数据结构,轴是指行和列,轴标签是指行的索引和列的名称,存储轴标签的数据结构是Index结构。
https://www.gairuo.com/p/pandas-data-structure
ser1 = pd.Series([1, 2, 3, 4])
ser1
0 1
1 2
2 3
3 4
dtype: int64
数据框(DataFrame)存储的是二维数据,数据框的结构由row和column构成,每一行都有一个row label,每一列都有一个column label,把row和column称作axis,把row label和column label称作axis label。通常情况下,column label 是文本类型,是列名称(column name),而row label是数值类型,也称作行索引(row index)。
df1 = pd.DataFrame([{"name":"Annie", "age":7, "sex": "female"},
{"name":"Lee Sin", "age":36, "sex": "male"},
{"name":"Leona", "age":27, "sex": "female"},
{"name":"Timo", "age": 15, "sex": "male"}
])
df1
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
name |
age |
sex |
0 |
Annie |
7 |
female |
1 |
Lee Sin |
36 |
male |
2 |
Leona |
27 |
female |
3 |
Timo |
15 |
male |
字符串类型:object.
整数类型:Int64,Int32,Int16, Int8.
无符号整数:UInt64,UInt32,UInt16, UInt8.
浮点数类型:float64,float32.
int64
name object
age int64
sex object
dtype: object
df1 = df1.astype({'age': 'float'})
df1.age.dtypes
py_list = [["Annie", 7, "female"],
["Lee Sin", 36, "male"],
["Leona", 27, "female"],
["Timo", 15, "male"]]
df_list = pd.DataFrame(py_list, columns=['name', 'age', 'sex'])
df_list
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
name |
age |
sex |
0 |
Annie |
7 |
female |
1 |
Lee Sin |
36 |
male |
2 |
Leona |
27 |
female |
3 |
Timo |
15 |
male |
py_dict = {"name":["Annie", "Lee Sin", "Leona", "Timo"],
"age":[7, 36, 27, 15],
"sex":["female", "male", "female", "male"]}
df_dict = pd.DataFrame(py_dict)
df_dict
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
name |
age |
sex |
0 |
Annie |
7 |
female |
1 |
Lee Sin |
36 |
male |
2 |
Leona |
27 |
female |
3 |
Timo |
15 |
male |
df_dict1 = pd.DataFrame.from_dict(py_dict)
df_dict1
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
name |
age |
sex |
0 |
Annie |
7 |
female |
1 |
Lee Sin |
36 |
male |
2 |
Leona |
27 |
female |
3 |
Timo |
15 |
male |
py_record = [{"name":"Annie", "age":7, "sex": "female"},
{"name":"Lee Sin", "age":36, "sex": "male"},
{"name":"Leona", "age":27, "sex": "female"},
{"name":"Timo", "age": 15, "sex": "male"}
]
df_record = pd.DataFrame(py_record)
df_record
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
name |
age |
sex |
0 |
Annie |
7 |
female |
1 |
Lee Sin |
36 |
male |
2 |
Leona |
27 |
female |
3 |
Timo |
15 |
male |
df_record1 = pd.DataFrame.from_records(py_record)
df_record1
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
name |
age |
sex |
0 |
Annie |
7 |
female |
1 |
Lee Sin |
36 |
male |
2 |
Leona |
27 |
female |
3 |
Timo |
15 |
male |
pd.read_excel()
pd.read_csv()
...
import pymysql
mysql_cn= pymysql.connections.Connection(host='localhost', port=3306,user='root', password='123456', database='demodb')
df = pd.read_sql('select * from user;', con=mysql_cn)
mysql_cn.close()
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
id |
name |
age |
sex |
0 |
1 |
Annie |
7 |
female |
1 |
2 |
Lee Sin |
36 |
male |
2 |
3 |
Leona |
27 |
female |
3 |
4 |
Timo |
15 |
male |
把数据存储于普通的column也能用于数据查询,那么使用index有什么好处?
index的用途总结:
1.更方便的数据查询
2.使用index可以获得性能提升
df_dmsc_raw = pd.read_csv('./DMSC.csv')
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
ID |
Movie_Name_EN |
Movie_Name_CN |
Crawl_Date |
Number |
Username |
Date |
Star |
Comment |
Like |
0 |
0 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
1 |
然潘 |
2015-05-13 |
3 |
连奥创都知道整容要去韩国。 |
2404 |
1 |
1 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
2 |
更深的白色 |
2015-04-24 |
2 |
非常失望,剧本完全敷衍了事,主线剧情没突破大家可以理解,可所有的人物都缺乏动机,正邪之间、... |
1231 |
2 |
2 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
3 |
有意识的贱民 |
2015-04-26 |
2 |
2015年度最失望作品。以为面面俱到,实则画蛇添足;以为主题深刻,实则老调重弹;以为推陈出... |
1052 |
3 |
3 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
4 |
不老的李大爷耶 |
2015-04-23 |
4 |
《铁人2》中勾引钢铁侠,《妇联1》中勾引鹰眼,《美队2》中勾引美国队长,在《妇联2》中终于... |
1045 |
4 |
4 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
5 |
ZephyrO |
2015-04-22 |
2 |
虽然从头打到尾,但是真的很无聊啊。 |
723 |
df_movie_id = df_dmsc_raw\
.filter(['Movie_Name_CN'])\
.drop_duplicates(['Movie_Name_CN'],keep='first')\
.reset_index(drop=True)
df_movie_id = df_movie_id.assign(movie_id=df_movie_id.index)
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
Movie_Name_CN |
movie_id |
0 |
复仇者联盟2 |
0 |
1 |
大鱼海棠 |
1 |
2 |
美国队长3 |
2 |
3 |
十二生肖 |
3 |
4 |
九层妖塔 |
4 |
df_dmsc = df_dmsc_raw.merge(df_movie_id, on=['Movie_Name_CN'])
df_dmsc.head()
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
ID |
Movie_Name_EN |
Movie_Name_CN |
Crawl_Date |
Number |
Username |
Date |
Star |
Comment |
Like |
movie_id |
0 |
0 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
1 |
然潘 |
2015-05-13 |
3 |
连奥创都知道整容要去韩国。 |
2404 |
0 |
1 |
1 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
2 |
更深的白色 |
2015-04-24 |
2 |
非常失望,剧本完全敷衍了事,主线剧情没突破大家可以理解,可所有的人物都缺乏动机,正邪之间、... |
1231 |
0 |
2 |
2 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
3 |
有意识的贱民 |
2015-04-26 |
2 |
2015年度最失望作品。以为面面俱到,实则画蛇添足;以为主题深刻,实则老调重弹;以为推陈出... |
1052 |
0 |
3 |
3 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
4 |
不老的李大爷耶 |
2015-04-23 |
4 |
《铁人2》中勾引钢铁侠,《妇联1》中勾引鹰眼,《美队2》中勾引美国队长,在《妇联2》中终于... |
1045 |
0 |
4 |
4 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
5 |
ZephyrO |
2015-04-22 |
2 |
虽然从头打到尾,但是真的很无聊啊。 |
723 |
0 |
ID 2125056
Movie_Name_EN 2125056
Movie_Name_CN 2125056
Crawl_Date 2125056
Number 2125056
Username 2124907
Date 2125056
Star 2125056
Comment 2125056
Like 2125056
movie_id 2125056
dtype: int64
df_dmsc_index = df_dmsc.set_index("movie_id", drop=False)
df_dmsc_index.head()
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
ID |
Movie_Name_EN |
Movie_Name_CN |
Crawl_Date |
Number |
Username |
Date |
Star |
Comment |
Like |
movie_id |
movie_id |
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
1 |
然潘 |
2015-05-13 |
3 |
连奥创都知道整容要去韩国。 |
2404 |
0 |
0 |
1 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
2 |
更深的白色 |
2015-04-24 |
2 |
非常失望,剧本完全敷衍了事,主线剧情没突破大家可以理解,可所有的人物都缺乏动机,正邪之间、... |
1231 |
0 |
0 |
2 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
3 |
有意识的贱民 |
2015-04-26 |
2 |
2015年度最失望作品。以为面面俱到,实则画蛇添足;以为主题深刻,实则老调重弹;以为推陈出... |
1052 |
0 |
0 |
3 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
4 |
不老的李大爷耶 |
2015-04-23 |
4 |
《铁人2》中勾引钢铁侠,《妇联1》中勾引鹰眼,《美队2》中勾引美国队长,在《妇联2》中终于... |
1045 |
0 |
0 |
4 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
5 |
ZephyrO |
2015-04-22 |
2 |
虽然从头打到尾,但是真的很无聊啊。 |
723 |
0 |
Int64Index([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
...
27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
dtype='int64', name='movie_id', length=2125056)
df_dmsc_index.loc[5].head()
df_dmsc_index.loc[5].tail()
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
ID |
Movie_Name_EN |
Movie_Name_CN |
Crawl_Date |
Number |
Username |
Date |
Star |
Comment |
Like |
movie_id |
movie_id |
|
|
|
|
|
|
|
|
|
|
|
5 |
292854 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
1 |
凌晓疯 |
2015-07-12 |
4 |
有人说挺《小时代》的人都将在电影史耻辱柱上有一席之地。那么给《大圣归来》的打一星的人也是如... |
12359 |
5 |
5 |
292855 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
2 |
taoxinxu释凡 |
2015-07-05 |
4 |
京剧+摇滚+大话西游配乐,孙猴如何解印、老师傅咋来悬空寺是败笔,但有气魄、胆识、干劲、瑕不... |
5853 |
5 |
5 |
292856 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
3 |
三体重症患者 |
2015-07-05 |
4 |
四星。1.甩开《超能陆战队》这种屎片几百条大街。2.西游记新编,无论从故事创作还是动画特效... |
5483 |
5 |
5 |
292857 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
4 |
hogdeer |
2015-07-01 |
1 |
实在不喜欢这种病毒式宣传方式,上映前一堆人在各大网站洗脑,电影怎么怎么好,哭成狗,官方没钱... |
4185 |
5 |
5 |
292858 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
5 |
影志 |
2015-07-03 |
2 |
造型太杂(结尾大蠕虫甚至恶心和吓人),角色形象cos痕迹明显(《超能陆战队》反派、《大话西... |
3526 |
5 |
ID 4
Movie_Name_EN Avengers Age of Ultron
Movie_Name_CN 复仇者联盟2
Crawl_Date 2017-01-22
Number 5
Username ZephyrO
Date 2015-04-22
Star 2
Comment 虽然从头打到尾,但是真的很无聊啊。
Like 723
movie_id 0
Name: 0, dtype: object
1.如果index是唯一的,Pandas会使用哈希表优化,查询性能为O(1)
2.如果index不是唯一的,但是有序,Pandas会使用二分查找算法,查询性能为O(logN)
3.如果index是完全随机的,那么每次查询都要扫描全表,查询性能为O(N)
%%time
# 根据index查询
df_dmsc_index.loc[5].head()
CPU times: user 384 µs, sys: 26 µs, total: 410 µs
Wall time: 401 µs
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
ID |
Movie_Name_EN |
Movie_Name_CN |
Crawl_Date |
Number |
Username |
Date |
Star |
Comment |
Like |
movie_id |
movie_id |
|
|
|
|
|
|
|
|
|
|
|
5 |
292854 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
1 |
凌晓疯 |
2015-07-12 |
4 |
有人说挺《小时代》的人都将在电影史耻辱柱上有一席之地。那么给《大圣归来》的打一星的人也是如... |
12359 |
5 |
5 |
292855 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
2 |
taoxinxu释凡 |
2015-07-05 |
4 |
京剧+摇滚+大话西游配乐,孙猴如何解印、老师傅咋来悬空寺是败笔,但有气魄、胆识、干劲、瑕不... |
5853 |
5 |
5 |
292856 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
3 |
三体重症患者 |
2015-07-05 |
4 |
四星。1.甩开《超能陆战队》这种屎片几百条大街。2.西游记新编,无论从故事创作还是动画特效... |
5483 |
5 |
5 |
292857 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
4 |
hogdeer |
2015-07-01 |
1 |
实在不喜欢这种病毒式宣传方式,上映前一堆人在各大网站洗脑,电影怎么怎么好,哭成狗,官方没钱... |
4185 |
5 |
5 |
292858 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
5 |
影志 |
2015-07-03 |
2 |
造型太杂(结尾大蠕虫甚至恶心和吓人),角色形象cos痕迹明显(《超能陆战队》反派、《大话西... |
3526 |
5 |
%%time
# 根据columns查询
df_dmsc_index[df_dmsc_index['movie_id']==5].head()
CPU times: user 24.3 ms, sys: 4.58 ms, total: 28.9 ms
Wall time: 31.9 ms
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
ID |
Movie_Name_EN |
Movie_Name_CN |
Crawl_Date |
Number |
Username |
Date |
Star |
Comment |
Like |
movie_id |
movie_id |
|
|
|
|
|
|
|
|
|
|
|
5 |
292854 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
1 |
凌晓疯 |
2015-07-12 |
4 |
有人说挺《小时代》的人都将在电影史耻辱柱上有一席之地。那么给《大圣归来》的打一星的人也是如... |
12359 |
5 |
5 |
292855 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
2 |
taoxinxu释凡 |
2015-07-05 |
4 |
京剧+摇滚+大话西游配乐,孙猴如何解印、老师傅咋来悬空寺是败笔,但有气魄、胆识、干劲、瑕不... |
5853 |
5 |
5 |
292856 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
3 |
三体重症患者 |
2015-07-05 |
4 |
四星。1.甩开《超能陆战队》这种屎片几百条大街。2.西游记新编,无论从故事创作还是动画特效... |
5483 |
5 |
5 |
292857 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
4 |
hogdeer |
2015-07-01 |
1 |
实在不喜欢这种病毒式宣传方式,上映前一堆人在各大网站洗脑,电影怎么怎么好,哭成狗,官方没钱... |
4185 |
5 |
5 |
292858 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
5 |
影志 |
2015-07-03 |
2 |
造型太杂(结尾大蠕虫甚至恶心和吓人),角色形象cos痕迹明显(《超能陆战队》反派、《大话西... |
3526 |
5 |
# 将数据随机打散
from sklearn.utils import shuffle
df_shuffle = shuffle(df_dmsc_index)
df_shuffle.head()
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
ID |
Movie_Name_EN |
Movie_Name_CN |
Crawl_Date |
Number |
Username |
Date |
Star |
Comment |
Like |
movie_id |
movie_id |
|
|
|
|
|
|
|
|
|
|
|
18 |
1288438 |
The Ghouls |
寻龙诀 |
2017-01-25 |
16775 |
赵扑倒 |
2015-12-20 |
4 |
陈坤真他妈帅 真他妈帅气逼人 真他妈帅气逼死人 赞美三主演 |
0 |
18 |
13 |
968051 |
My Sunshine |
何以笙箫默 |
2017-01-30 |
26263 |
Rievcer |
2015-05-01 |
2 |
基本无亮点 可能是我电视剧先入为主的缘故 感觉电影版内容太跳跃 人物太空洞 但本来就是抱着... |
0 |
13 |
16 |
1144707 |
The Avengers |
复仇者联盟 |
2017-01-22 |
75641 |
Ryan |
2013-03-07 |
4 |
Marvel!Marvel!!Marvel!!!无条件喜欢~ |
0 |
16 |
16 |
1119355 |
The Avengers |
复仇者联盟 |
2017-01-22 |
48662 |
大屁股平躺腰疼 |
2015-05-13 |
4 |
最后一个彩蛋太搞了 |
0 |
16 |
12 |
908354 |
Lost In Thailand |
泰囧 |
2017-01-06 |
52291 |
Novocain |
2013-01-02 |
4 |
觉得没《人再囧途》,也缺少了那种感动。 |
0 |
12 |
# 索引是否递增
df_shuffle.index.is_monotonic_increasing
# 索引是否唯一
df_shuffle.index.is_unique
%%time
df_shuffle.loc[5].head()
CPU times: user 47.9 ms, sys: 7.38 ms, total: 55.3 ms
Wall time: 111 ms
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
ID |
Movie_Name_EN |
Movie_Name_CN |
Crawl_Date |
Number |
Username |
Date |
Star |
Comment |
Like |
movie_id |
movie_id |
|
|
|
|
|
|
|
|
|
|
|
5 |
377449 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
86133 |
淡了 |
2016-10-01 |
5 |
好 |
0 |
5 |
5 |
335084 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
43056 |
头号精神病 |
2015-10-02 |
5 |
不可避免有些抄袭的影子,或者应该称之为借鉴吧。但是确实看到了很大的希望。 |
0 |
5 |
5 |
294744 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
1926 |
十月 |
2015-07-30 |
3 |
支持国产动画越来越好。 |
0 |
5 |
5 |
409124 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
119064 |
一念成佛 |
2015-07-14 |
5 |
翻贴吧发现有些人喷大圣里的boss抄袭《千与千寻》里的无脸男,简直不能忍!!现在的人连自己... |
0 |
5 |
5 |
402517 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
112277 |
no-one |
2015-07-18 |
5 |
大圣归来太赞了!每一帧的风景都美哭,本来很担心照搬西游记的剧情结果非常惊喜,配乐有中国特色... |
0 |
5 |
df_sort = df_shuffle.sort_index()
df_sort.head()
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
ID |
Movie_Name_EN |
Movie_Name_CN |
Crawl_Date |
Number |
Username |
Date |
Star |
Comment |
Like |
movie_id |
movie_id |
|
|
|
|
|
|
|
|
|
|
|
0 |
19778 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
20677 |
泼猴 |
2015-05-13 |
4 |
眼里只有寡姐! |
0 |
0 |
0 |
32780 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
34251 |
stellazhangcr7 |
2015-05-26 |
3 |
可能因为没看过漫威的系列漫画,对几位超级英雄的影片也不是很了解,感觉这部电影就是眼花缭乱的... |
0 |
0 |
0 |
1206 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
1414 |
小花明日香 |
2015-04-30 |
4 |
我在眼拙没认出来克里斯埃文斯就是当年神奇四侠里面的火人的情况下再度迷上了他,这好像那个两度... |
0 |
0 |
0 |
42983 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
44967 |
不会物理 |
2016-03-07 |
4 |
观众朋友们,我们想死你啦。看完别走,之后几部电影的票钱先交一下。 |
0 |
0 |
0 |
30687 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
32086 |
说唱俑 |
2015-05-16 |
3 |
影院版的字幕翻译太low,笑点都没译出来,奥创太弱,显得复联也很弱,后面创造出的那个玩意是... |
0 |
0 |
# 索引是否递增
df_sort.index.is_monotonic_increasing
# 索引是否唯一
df_sort.index.is_unique
%%time
df_sort.loc[5].head()
CPU times: user 419 µs, sys: 26 µs, total: 445 µs
Wall time: 435 µs
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
ID |
Movie_Name_EN |
Movie_Name_CN |
Crawl_Date |
Number |
Username |
Date |
Star |
Comment |
Like |
movie_id |
movie_id |
|
|
|
|
|
|
|
|
|
|
|
5 |
345768 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
53897 |
空爪 |
2015-07-20 |
3 |
想了想还是三星吧,效果在国漫里算良心,但不能忽视自己在影院差点睡着的事实 |
0 |
5 |
5 |
415455 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
125485 |
mikolovetony |
2015-07-13 |
5 |
自来水怎么了?给好片子打满分怎么了?你们这都没看过的一星喜欢什么?“青春”撕逼小时代123... |
0 |
5 |
5 |
303786 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
11223 |
AlmostHuman |
2015-07-15 |
4 |
槽点满满但是每当小刀会序曲响起的时候整个人就废了!!!大圣真心帅我一脸!快22了居然在电影... |
0 |
5 |
5 |
416993 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
127039 |
Confidence |
2015-07-12 |
5 |
非常棒的一部电影,对西游记里的人物关系进行了一些改编,但是你又不会觉得很离谱。更重要的是他... |
0 |
5 |
5 |
371043 |
CUG King of Heroes |
大圣归来 |
2017-01-03 |
79621 |
爱鲸鱼的十三郎 |
2016-07-11 |
5 |
时隔一年把影评补上,爱了大圣这么久,感到依旧在。大圣归来很棒!诚意之做 |
1 |
5 |
df1 = pd.DataFrame([1, 2,3], index=['a', 'b', 'c'], columns=['A'])
df1
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
df2 = pd.DataFrame([4,5,6], index=['b', 'c', 'd'],columns=['A'])
df2
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
A |
a |
NaN |
b |
6.0 |
c |
8.0 |
d |
NaN |
pandas的merge,相当于sql的join,将不同的表按key关联到一个表
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True,
suffixes=('_x', '_y'), copy=True, indicator=False,
validate=None)```<br>
*how:连接方式,默认为inner,可设为inner/outer/left/righ,对应sql里的inner join/outer join/left join/ right join<br>*
*on:根据某个字段进行连接,必须存在于两个DateFrame中(若未同时存在,则需要分别使用left_on 和 right_on 来设置)<br>*
*left_on:左连接,以DataFrame1中用作连接键的列<br>*
*right_on:右连接,以DataFrame2中用作连接键的列<br>*
*left_index:bool, default False,将DataFrame1行索引用作连接键<br>*
*right_index:bool, default False,将DataFrame2行索引用作连接键<br>*
*sort:根据连接键对合并后的数据进行排列,默认为True<br>*
*suffixes:对两个数据集中出现的重复列,新数据集中加上后缀 _x, _y 进行区别<br>*
*https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html*
#### 以inner为例
##### pandas 实现
```python
%%time
df_result = pd.merge(df_dmsc_raw, df_movie_id, on=['Movie_Name_CN'], how='inner')
df_result.head()
CPU times: user 1.12 s, sys: 195 ms, total: 1.32 s
Wall time: 1.37 s
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
|
ID |
Movie_Name_EN |
Movie_Name_CN |
Crawl_Date |
Number |
Username |
Date |
Star |
Comment |
Like |
movie_id |
0 |
0 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
1 |
然潘 |
2015-05-13 |
3 |
连奥创都知道整容要去韩国。 |
2404 |
0 |
1 |
1 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
2 |
更深的白色 |
2015-04-24 |
2 |
非常失望,剧本完全敷衍了事,主线剧情没突破大家可以理解,可所有的人物都缺乏动机,正邪之间、... |
1231 |
0 |
2 |
2 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
3 |
有意识的贱民 |
2015-04-26 |
2 |
2015年度最失望作品。以为面面俱到,实则画蛇添足;以为主题深刻,实则老调重弹;以为推陈出... |
1052 |
0 |
3 |
3 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
4 |
不老的李大爷耶 |
2015-04-23 |
4 |
《铁人2》中勾引钢铁侠,《妇联1》中勾引鹰眼,《美队2》中勾引美国队长,在《妇联2》中终于... |
1045 |
0 |
4 |
4 |
Avengers Age of Ultron |
复仇者联盟2 |
2017-01-22 |
5 |
ZephyrO |
2015-04-22 |
2 |
虽然从头打到尾,但是真的很无聊啊。 |
723 |
0 |
dmsc_raw_set = df_dmsc_raw.to_dict(orient="records")
movie_id_set = df_movie_id.to_dict(orient="records")
def dict_merge(dmsc_raw_set, movie_id_set):
result_list = []
for movie_comment in dmsc_raw_set:
for movie_id in movie_id_set:
if movie_comment['Movie_Name_CN'] == movie_id['Movie_Name_CN']:
movie_comment.update({'movie_id': movie_id['movie_id']})
result_list.append(movie_comment)
return result_list
%%time
result_list = dict_merge(dmsc_raw_set, movie_id_set)
result_list[:5]
CPU times: user 8.95 s, sys: 652 ms, total: 9.6 s
Wall time: 9.84 s
[{'ID': 0,
'Movie_Name_EN': 'Avengers Age of Ultron',
'Movie_Name_CN': '复仇者联盟2',
'Crawl_Date': '2017-01-22',
'Number': 1,
'Username': '然潘',
'Date': '2015-05-13',
'Star': 3,
'Comment': ' 连奥创都知道整容要去韩国。',
'Like': 2404,
'movie_id': 0},
{'ID': 1,
'Movie_Name_EN': 'Avengers Age of Ultron',
'Movie_Name_CN': '复仇者联盟2',
'Crawl_Date': '2017-01-22',
'Number': 2,
'Username': '更深的白色',
'Date': '2015-04-24',
'Star': 2,
'Comment': ' 非常失望,剧本完全敷衍了事,主线剧情没突破大家可以理解,可所有的人物都缺乏动机,正邪之间、妇联内部都没什么火花。团结-分裂-团结的三段式虽然老套但其实也可以利用积攒下来的形象魅力搞出意思,但剧本写得非常肤浅、平面。场面上调度混乱呆板,满屏的铁甲审美疲劳。只有笑点算得上差强人意。',
'Like': 1231,
'movie_id': 0},
{'ID': 2,
'Movie_Name_EN': 'Avengers Age of Ultron',
'Movie_Name_CN': '复仇者联盟2',
'Crawl_Date': '2017-01-22',
'Number': 3,
'Username': '有意识的贱民',
'Date': '2015-04-26',
'Star': 2,
'Comment': ' 2015年度最失望作品。以为面面俱到,实则画蛇添足;以为主题深刻,实则老调重弹;以为推陈出新,实则俗不可耐;以为场面很high,实则high劲不足。气!上一集的趣味全无,这集的笑点明显刻意到心虚。全片没有任何片段给我有紧张激动的时候,太弱了,跟奥创一样。',
'Like': 1052,
'movie_id': 0},
{'ID': 3,
'Movie_Name_EN': 'Avengers Age of Ultron',
'Movie_Name_CN': '复仇者联盟2',
'Crawl_Date': '2017-01-22',
'Number': 4,
'Username': '不老的李大爷耶',
'Date': '2015-04-23',
'Star': 4,
'Comment': ' 《铁人2》中勾引钢铁侠,《妇联1》中勾引鹰眼,《美队2》中勾引美国队长,在《妇联2》中终于……跟绿巨人表白了,黑寡妇用实际行动告诉了我们什么叫忠贞不二;而且为了治疗不孕不育连作战武器都变成了两支验孕棒(坚决相信快银没有死,后面还得回来)',
'Like': 1045,
'movie_id': 0},
{'ID': 4,
'Movie_Name_EN': 'Avengers Age of Ultron',
'Movie_Name_CN': '复仇者联盟2',
'Crawl_Date': '2017-01-22',
'Number': 5,
'Username': 'ZephyrO',
'Date': '2015-04-22',
'Star': 2,
'Comment': ' 虽然从头打到尾,但是真的很无聊啊。',
'Like': 723,
'movie_id': 0}]