python数据分析之Pandas-3
视频:课程5_哔哩哔哩_bilibili
目录
python数据分析之Pandas-3
3.1 数据重塑和轴向旋转
(1)层次化索引
Series的层次化索引:
Dataframe的层次化索引:
每一个索引都是一个元组
取消层次化索引
(2)数据旋转
dataframe也可以使用stack和unstack,转化为层次化索引的Series
3.2 数据分组,分组运算
GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表
按照电影的产地进行分组
先定义一个分组变量group
可以计算分组后各个的统计量
计算每年的平均评分
只会对数值变量进行分组运算
我们也可以传入多个分组变量
获得每个地区,每一年的电影的评分的均值
Series通过unstack方法转化为dataframe
会产生缺失值
3.3 离散化处理
冷门高分电影
将处理后的数据进行保存
3.4 合并数据集
( 1 )append
( 2 )merge
我们选取6部热门电影
( 3 )concat
python数据分析之Pandas-3
导入包
In [ ]:
import pandas as pd import numpy as np
读入数据
In [ ]:
df = pd.read_excel(r'movie_data2.xlsx', index_col = 0)
In [ ]:
df[:5]
Out[ ]:
名字 | 投票人数 | 类型 | 产地 | 上映时间 | 时长 | 年代 | 评分 | 首映地点 | |
---|---|---|---|---|---|---|---|---|---|
0 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 美国 | 1994-09-10 00:00:00 | 142 | 1994 | 9.6 | 多伦多电影节 |
1 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 美国 | 1957-12-17 00:00:00 | 116 | 1957 | 9.5 | 美国 |
2 | 美丽人生 | 327855 | 剧情/喜剧/爱情 | 意大利 | 1997-12-20 00:00:00 | 116 | 1997 | 9.5 | 意大利 |
3 | 阿甘正传 | 580897 | 剧情/爱情 | 美国 | 1994-06-23 00:00:00 | 142 | 1994 | 9.4 | 洛杉矶首映 |
4 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 中国大陆 | 1993-01-01 00:00:00 | 171 | 1993 | 9.4 | 香港 |
3.1 数据重塑和轴向旋转
(1)层次化索引
层次化索引是pandas的一项重要功能,它能使我们在一个轴上拥有多个索引。
Series的层次化索引:
In [ ]:
s = pd.Series(np.arange(1,10), index = [['a','a','a','b','b','c','c','d','d'], [1,2,3,1,2,3,1,2,3]]) s #类似于合并单元格
Out[ ]:
a 1 12 23 3 b 1 42 5 c 3 61 7 d 2 83 9 dtype: int32
In [ ]:
s.index
Out[ ]:
MultiIndex([('a', 1),('a', 2),('a', 3),('b', 1),('b', 2),('c', 3),('c', 1),('d', 2),('d', 3)],)
In [ ]:
s['a'] #外层索引
Out[ ]:
1 1 2 2 3 3 dtype: int32
In [ ]:
s['a':'c'] #切片
Out[ ]:
a 1 12 23 3 b 1 42 5 c 3 61 7 dtype: int32
In [ ]:
s[:,1] #内层索引
Out[ ]:
a 1 b 4 c 7 dtype: int32
In [ ]:
s['c',3] #提取具体的值
Out[ ]:
6
通过unstack方法可以将Series变成一个DataFrame
In [ ]:
s.unstack()
Out[ ]:
1 | 2 | 3 | |
---|---|---|---|
a | 1.0 | 2.0 | 3.0 |
b | 4.0 | 5.0 | NaN |
c | 7.0 | NaN | 6.0 |
d | NaN | 8.0 | 9.0 |
In [ ]:
s.unstack().stack() #形式上的相互转换
Out[ ]:
a 1 1.02 2.03 3.0 b 1 4.02 5.0 c 1 7.03 6.0 d 2 8.03 9.0 dtype: float64
Dataframe的层次化索引:
对于DataFrame来说,行和列都能进行层次化索引。
In [ ]:
data = pd.DataFrame(np.arange(12).reshape(4,3), index = [['a','a','b','b'],[1,2,1,2]], columns = [['A','A','B'],['Z','X','C']]) data
Out[ ]:
A | B | |||
---|---|---|---|---|
Z | X | C | ||
a | 1 | 0 | 1 | 2 |
2 | 3 | 4 | 5 | |
b | 1 | 6 | 7 | 8 |
2 | 9 | 10 | 11 |
In [ ]:
data['A']
Out[ ]:
Z | X | ||
---|---|---|---|
a | 1 | 0 | 1 |
2 | 3 | 4 | |
b | 1 | 6 | 7 |
2 | 9 | 10 |
In [ ]:
data.index.names = ["row1","row2"] data.columns.names = ["col1", "col2"] data
Out[ ]:
col1 | A | B | ||
---|---|---|---|---|
col2 | Z | X | C | |
row1 | row2 | |||
a | 1 | 0 | 1 | 2 |
2 | 3 | 4 | 5 | |
b | 1 | 6 | 7 | 8 |
2 | 9 | 10 | 11 |
In [ ]:
data.swaplevel("row1","row2") #位置调整
Out[ ]:
col1 | A | B | ||
---|---|---|---|---|
col2 | Z | X | C | |
row2 | row1 | |||
1 | a | 0 | 1 | 2 |
2 | a | 3 | 4 | 5 |
1 | b | 6 | 7 | 8 |
2 | b | 9 | 10 | 11 |
了解了层次化索引的基本知识之后,我们试着将电影数据也处理成一种多层索引的结构。
In [ ]:
df.index #默认索引
Out[ ]:
Int64Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8,9,...38153, 38154, 38155, 38156, 38157, 38158, 38159, 38160, 38161,38162],dtype='int64', length=38163)
把产地和年代同时设成索引,产地是外层索引,年代为内层索引。
set_index可以把列变成索引
reset_index是把索引变成列
In [ ]:
df = df.set_index(["产地", "年代"]) df
Out[ ]:
名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | ||
---|---|---|---|---|---|---|---|---|
产地 | 年代 | |||||||
美国 | 1994 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 00:00:00 | 142 | 9.600000 | 多伦多电影节 |
1957 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 1957-12-17 00:00:00 | 116 | 9.500000 | 美国 | |
意大利 | 1997 | 美丽人生 | 327855 | 剧情/喜剧/爱情 | 1997-12-20 00:00:00 | 116 | 9.500000 | 意大利 |
美国 | 1994 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 00:00:00 | 142 | 9.400000 | 洛杉矶首映 |
中国大陆 | 1993 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 1993-01-01 00:00:00 | 171 | 9.400000 | 香港 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
美国 | 1935 | 1935年 | 57 | 喜剧/歌舞 | 1935-03-15 00:00:00 | 98 | 7.600000 | 美国 |
中国大陆 | 1986 | 血溅画屏 | 95 | 剧情/悬疑/犯罪/武侠/古装 | 1905-06-08 00:00:00 | 91 | 7.100000 | 美国 |
1986 | 魔窟中的幻想 | 51 | 惊悚/恐怖/儿童 | 1905-06-08 00:00:00 | 78 | 8.000000 | 美国 | |
俄罗斯 | 1977 | 列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме... | 32 | 剧情/战争 | 1905-05-30 00:00:00 | 97 | 6.600000 | 美国 |
美国 | 2018 | 复仇者联盟3 | 123456 | 剧情/科幻 | 2018-05-04 00:00:00 | 142 | 6.935704 | 美国 |
38163 rows × 7 columns
每一个索引都是一个元组
In [ ]:
df.index[0]
Out[ ]:
('美国', 1994)
获取所有的美国电影,由于产地信息已经变成了索引,因此要是用.loc方法。
In [ ]:
df.loc["美国"] #行标签索引行数据,注意索引多行时两边都是闭区间
Out[ ]:
名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | |
---|---|---|---|---|---|---|---|
年代 | |||||||
1994 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 00:00:00 | 142 | 9.600000 | 多伦多电影节 |
1957 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 1957-12-17 00:00:00 | 116 | 9.500000 | 美国 |
1994 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 00:00:00 | 142 | 9.400000 | 洛杉矶首映 |
2012 | 泰坦尼克号 | 157074 | 剧情/爱情/灾难 | 2012-04-10 00:00:00 | 194 | 9.400000 | 中国大陆 |
1993 | 辛德勒的名单 | 306904 | 剧情/历史/战争 | 1993-11-30 00:00:00 | 195 | 9.400000 | 华盛顿首映 |
... | ... | ... | ... | ... | ... | ... | ... |
1987 | 零下的激情 | 199 | 剧情/爱情/犯罪 | 1987-11-06 00:00:00 | 98 | 7.400000 | 美国 |
1986 | 离别秋波 | 240 | 剧情/爱情/音乐 | 1986-02-19 00:00:00 | 90 | 8.200000 | 美国 |
1986 | 极乐森林 | 45 | 纪录片 | 1986-09-14 00:00:00 | 90 | 8.100000 | 美国 |
1935 | 1935年 | 57 | 喜剧/歌舞 | 1935-03-15 00:00:00 | 98 | 7.600000 | 美国 |
2018 | 复仇者联盟3 | 123456 | 剧情/科幻 | 2018-05-04 00:00:00 | 142 | 6.935704 | 美国 |
11714 rows × 7 columns
这样做的最大好处是我们可以简化很多的筛选环节
每一个索引是一个元组
In [ ]:
df = df.swaplevel("产地", "年代") #调换标签顺序 df
Out[ ]:
名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | ||
---|---|---|---|---|---|---|---|---|
年代 | 产地 | |||||||
1994 | 美国 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 00:00:00 | 142 | 9.600000 | 多伦多电影节 |
1957 | 美国 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 1957-12-17 00:00:00 | 116 | 9.500000 | 美国 |
1997 | 意大利 | 美丽人生 | 327855 | 剧情/喜剧/爱情 | 1997-12-20 00:00:00 | 116 | 9.500000 | 意大利 |
1994 | 美国 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 00:00:00 | 142 | 9.400000 | 洛杉矶首映 |
1993 | 中国大陆 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 1993-01-01 00:00:00 | 171 | 9.400000 | 香港 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
1935 | 美国 | 1935年 | 57 | 喜剧/歌舞 | 1935-03-15 00:00:00 | 98 | 7.600000 | 美国 |
1986 | 中国大陆 | 血溅画屏 | 95 | 剧情/悬疑/犯罪/武侠/古装 | 1905-06-08 00:00:00 | 91 | 7.100000 | 美国 |
中国大陆 | 魔窟中的幻想 | 51 | 惊悚/恐怖/儿童 | 1905-06-08 00:00:00 | 78 | 8.000000 | 美国 | |
1977 | 俄罗斯 | 列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме... | 32 | 剧情/战争 | 1905-05-30 00:00:00 | 97 | 6.600000 | 美国 |
2018 | 美国 | 复仇者联盟3 | 123456 | 剧情/科幻 | 2018-05-04 00:00:00 | 142 | 6.935704 | 美国 |
38163 rows × 7 columns
In [ ]:
df.loc[1994]
Out[ ]:
名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | |
---|---|---|---|---|---|---|---|
产地 | |||||||
美国 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 00:00:00 | 142 | 9.6 | 多伦多电影节 |
美国 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 00:00:00 | 142 | 9.4 | 洛杉矶首映 |
法国 | 这个杀手不太冷 | 662552 | 剧情/动作/犯罪 | 1994-09-14 00:00:00 | 133 | 9.4 | 法国 |
美国 | 34街的 | 768 | 剧情/家庭/奇幻 | 1994-12-23 00:00:00 | 114 | 7.9 | 美国 |
中国大陆 | 活着 | 202794 | 剧情/家庭 | 1994-05-18 00:00:00 | 132 | 9.0 | 法国 |
... | ... | ... | ... | ... | ... | ... | ... |
美国 | 鬼精灵2: 恐怖 | 60 | 喜剧/恐怖/奇幻 | 1994-04-08 00:00:00 | 85 | 5.8 | 美国 |
英国 | 黑色第16 | 44 | 剧情/惊悚 | 1996-02-01 00:00:00 | 106 | 6.8 | 美国 |
日本 | 蜡笔小新之布里布里王国的秘密宝藏 クレヨンしんちゃん ブリブリ王国の | 2142 | 动画 | 1994-04-23 00:00:00 | 94 | 7.7 | 日本 |
日本 | 龙珠Z剧场版10:两人面临危机! 超战士难以成眠 ドラゴンボール Z 劇場版:危険なふたり! | 579 | 动画 | 1994-03-12 00:00:00 | 53 | 7.2 | 美国 |
中国香港 | 重案实录之惊天械劫案 重案實錄之驚天械劫 | 90 | 动作/犯罪 | 1905-06-16 00:00:00 | 114 | 7.3 | 美国 |
489 rows × 7 columns
取消层次化索引
In [ ]:
df = df.reset_index() df[:5]
Out[ ]:
年代 | 产地 | 名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | |
---|---|---|---|---|---|---|---|---|---|
0 | 1994 | 美国 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 00:00:00 | 142 | 9.6 | 多伦多电影节 |
1 | 1957 | 美国 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 1957-12-17 00:00:00 | 116 | 9.5 | 美国 |
2 | 1997 | 意大利 | 美丽人生 | 327855 | 剧情/喜剧/爱情 | 1997-12-20 00:00:00 | 116 | 9.5 | 意大利 |
3 | 1994 | 美国 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 00:00:00 | 142 | 9.4 | 洛杉矶首映 |
4 | 1993 | 中国大陆 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 1993-01-01 00:00:00 | 171 | 9.4 | 香港 |
(2)数据旋转
行列转化:以前5部电影为例
In [ ]:
data = df[:5] data
Out[ ]:
年代 | 产地 | 名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | |
---|---|---|---|---|---|---|---|---|---|
0 | 1994 | 美国 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 00:00:00 | 142 | 9.6 | 多伦多电影节 |
1 | 1957 | 美国 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 1957-12-17 00:00:00 | 116 | 9.5 | 美国 |
2 | 1997 | 意大利 | 美丽人生 | 327855 | 剧情/喜剧/爱情 | 1997-12-20 00:00:00 | 116 | 9.5 | 意大利 |
3 | 1994 | 美国 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 00:00:00 | 142 | 9.4 | 洛杉矶首映 |
4 | 1993 | 中国大陆 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 1993-01-01 00:00:00 | 171 | 9.4 | 香港 |
.T可以直接让数据的行列进行交换
In [ ]:
data.T
Out[ ]:
0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
年代 | 1994 | 1957 | 1997 | 1994 | 1993 |
产地 | 美国 | 美国 | 意大利 | 美国 | 中国大陆 |
名字 | 肖申克的救赎 | 控方证人 | 美丽人生 | 阿甘正传 | 霸王别姬 |
投票人数 | 692795 | 42995 | 327855 | 580897 | 478523 |
类型 | 剧情/犯罪 | 剧情/悬疑/犯罪 | 剧情/喜剧/爱情 | 剧情/爱情 | 剧情/爱情/同性 |
上映时间 | 1994-09-10 00:00:00 | 1957-12-17 00:00:00 | 1997-12-20 00:00:00 | 1994-06-23 00:00:00 | 1993-01-01 00:00:00 |
时长 | 142 | 116 | 116 | 142 | 171 |
评分 | 9.6 | 9.5 | 9.5 | 9.4 | 9.4 |
首映地点 | 多伦多电影节 | 美国 | 意大利 | 洛杉矶首映 | 香港 |
dataframe也可以使用stack和unstack,转化为层次化索引的Series
In [ ]:
data.stack()
Out[ ]:
0 年代 1994产地 美国名字 肖申克的救赎投票人数 692795类型 剧情/犯罪上映时间 1994-09-10 00:00:00时长 142评分 9.6首映地点 多伦多电影节 1 年代 1957产地 美国名字 控方证人投票人数 42995类型 剧情/悬疑/犯罪上映时间 1957-12-17 00:00:00时长 116评分 9.5首映地点 美国 2 年代 1997产地 意大利名字 美丽人生 投票人数 327855类型 剧情/喜剧/爱情上映时间 1997-12-20 00:00:00时长 116评分 9.5首映地点 意大利 3 年代 1994产地 美国名字 阿甘正传投票人数 580897类型 剧情/爱情上映时间 1994-06-23 00:00:00时长 142评分 9.4首映地点 洛杉矶首映 4 年代 1993产地 中国大陆名字 霸王别姬投票人数 478523类型 剧情/爱情/同性上映时间 1993-01-01 00:00:00时长 171评分 9.4首映地点 香港 dtype: object
In [ ]:
data.stack().unstack() #转回来
Out[ ]:
年代 | 产地 | 名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | |
---|---|---|---|---|---|---|---|---|---|
0 | 1994 | 美国 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 | 142 | 9.6 | 多伦多电影节 |
1 | 1957 | 美国 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 1957-12-17 | 116 | 9.5 | 美国 |
2 | 1997 | 意大利 | 美丽人生 | 327855 | 剧情/喜剧/爱情 | 1997-12-20 | 116 | 9.5 | 意大利 |
3 | 1994 | 美国 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 | 142 | 9.4 | 洛杉矶首映 |
4 | 1993 | 中国大陆 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 1993-01-01 | 171 | 9.4 | 香港 |
3.2 数据分组,分组运算
GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表
按照电影的产地进行分组
In [ ]:
group = df.groupby(df["产地"])
先定义一个分组变量group
In [ ]:
type(group)
Out[ ]:
pandas.core.groupby.generic.DataFrameGroupBy
可以计算分组后各个的统计量
In [ ]:
group.mean()
Out[ ]:
年代 | 投票人数 | 时长 | 评分 | |
---|---|---|---|---|
产地 | ||||
中国台湾 | 1999.009709 | 8474.864078 | 87.257282 | 7.066667 |
中国大陆 | 2004.582432 | 10915.587708 | 81.517014 | 6.062991 |
中国香港 | 1991.088865 | 8141.709870 | 88.553214 | 6.473551 |
丹麦 | 1999.091371 | 2003.781726 | 88.507614 | 7.246701 |
俄罗斯 | 1984.892857 | 1021.180672 | 96.100840 | 7.557143 |
其他 | 1998.721721 | 1619.144450 | 87.656399 | 7.226713 |
加拿大 | 2002.520451 | 1921.834979 | 80.592384 | 6.727221 |
印度 | 2006.039326 | 3219.587079 | 120.949438 | 6.864888 |
墨西哥 | 1992.786325 | 1191.982906 | 92.641026 | 7.085470 |
巴西 | 1999.888889 | 3606.333333 | 88.373737 | 7.232323 |
德国 | 1996.053869 | 2624.736533 | 92.258570 | 7.187365 |
意大利 | 1985.599190 | 3374.955466 | 104.333333 | 7.183131 |
日本 | 1999.886536 | 3592.015781 | 85.010587 | 7.192569 |
比利时 | 1999.503650 | 1244.153285 | 83.065693 | 7.197080 |
法国 | 1991.794044 | 3663.066380 | 90.249013 | 7.243093 |
波兰 | 1987.027624 | 881.640884 | 80.734807 | 7.441989 |
泰国 | 2009.129252 | 5322.724490 | 88.442177 | 6.109184 |
澳大利亚 | 2002.966102 | 4798.111864 | 85.593220 | 6.953559 |
瑞典 | 1987.106952 | 1549.700535 | 94.625668 | 7.425668 |
美国 | 1994.519891 | 8677.294861 | 89.976097 | 6.923351 |
英国 | 1996.630926 | 4979.837848 | 89.213318 | 7.498420 |
荷兰 | 2001.198675 | 957.589404 | 75.887417 | 7.160265 |
西班牙 | 2001.546275 | 3355.266366 | 90.905192 | 7.025056 |
阿根廷 | 2004.212389 | 2283.938053 | 92.548673 | 7.248673 |
韩国 | 2008.100596 | 6527.518629 | 100.018629 | 6.351118 |
In [ ]:
group.sum()
Out[ ]:
年代 | 投票人数 | 时长 | 评分 | |
---|---|---|---|---|
产地 | ||||
中国台湾 | 1235388 | 5237466 | 53925 | 4367.200000 |
中国大陆 | 7599372 | 41380993 | 309031 | 22984.800000 |
中国香港 | 5668630 | 23179448 | 252111 | 18430.200000 |
丹麦 | 393821 | 394745 | 17436 | 1427.600000 |
俄罗斯 | 944809 | 486082 | 45744 | 3597.200000 |
其他 | 3763593 | 3048849 | 165057 | 13607.900000 |
加拿大 | 1419787 | 1362581 | 57140 | 4769.600000 |
印度 | 714150 | 1146173 | 43058 | 2443.900000 |
墨西哥 | 233156 | 139462 | 10839 | 829.000000 |
巴西 | 197989 | 357027 | 8749 | 716.000000 |
德国 | 2037971 | 2679856 | 94196 | 7338.300000 |
意大利 | 1471329 | 2500842 | 77311 | 5322.700000 |
日本 | 10011432 | 17981631 | 425563 | 36006.000000 |
比利时 | 273932 | 170449 | 11380 | 986.000000 |
法国 | 5551130 | 10208966 | 251524 | 20186.500000 |
波兰 | 359652 | 159577 | 14613 | 1347.000000 |
泰国 | 590684 | 1564881 | 26002 | 1796.100000 |
澳大利亚 | 590875 | 1415443 | 25250 | 2051.300000 |
瑞典 | 371589 | 289794 | 17695 | 1388.600000 |
美国 | 23363806 | 101645832 | 1053980 | 81100.135704 |
英国 | 5307045 | 13236409 | 237129 | 19930.800000 |
荷兰 | 302181 | 144596 | 11459 | 1081.200000 |
西班牙 | 886685 | 1486383 | 40271 | 3112.100000 |
阿根廷 | 226476 | 258085 | 10458 | 819.100000 |
韩国 | 2694871 | 8759930 | 134225 | 8523.200000 |
计算每年的平均评分
In [ ]:
df["评分"].groupby(df["年代"]).mean()
Out[ ]:
年代 1888 7.950000 1890 4.800000 1892 7.500000 1894 6.633333 1895 7.575000... 2013 6.375974 2014 6.249384 2015 6.121925 2016 5.834524 2018 6.935704 Name: 评分, Length: 127, dtype: float64
只会对数值变量进行分组运算
In [ ]:
df["年代"] = df["年代"].astype("str") df.groupby(df["产地"]).median() #不会再对年代进行求取
Out[ ]:
投票人数 | 时长 | 评分 | |
---|---|---|---|
产地 | |||
中国台湾 | 487.0 | 92.0 | 7.1 |
中国大陆 | 502.0 | 90.0 | 6.4 |
中国香港 | 637.0 | 92.0 | 6.5 |
丹麦 | 182.0 | 94.0 | 7.3 |
俄罗斯 | 132.5 | 93.0 | 7.7 |
其他 | 158.0 | 90.0 | 7.4 |
加拿大 | 258.0 | 89.0 | 6.8 |
印度 | 139.0 | 131.0 | 7.0 |
墨西哥 | 183.0 | 94.0 | 7.2 |
巴西 | 131.0 | 96.0 | 7.3 |
德国 | 212.0 | 94.0 | 7.3 |
意大利 | 187.0 | 101.0 | 7.3 |
日本 | 359.0 | 89.0 | 7.3 |
比利时 | 226.0 | 90.0 | 7.3 |
法国 | 244.0 | 95.0 | 7.3 |
波兰 | 174.0 | 87.0 | 7.5 |
泰国 | 542.5 | 92.5 | 6.2 |
澳大利亚 | 323.0 | 95.0 | 7.0 |
瑞典 | 191.0 | 96.0 | 7.6 |
美国 | 415.0 | 93.0 | 7.0 |
英国 | 345.0 | 92.0 | 7.6 |
荷兰 | 180.0 | 85.0 | 7.3 |
西班牙 | 267.0 | 97.0 | 7.1 |
阿根廷 | 146.0 | 97.0 | 7.3 |
韩国 | 1007.0 | 104.0 | 6.5 |
我们也可以传入多个分组变量
In [ ]:
df.groupby([df["产地"],df["年代"]]).mean() #根据两个变量进行分组
Out[ ]:
投票人数 | 时长 | 评分 | ||
---|---|---|---|---|
产地 | 年代 | |||
中国台湾 | 1963 | 121.000000 | 113.000000 | 6.400000 |
1965 | 153.666667 | 105.000000 | 6.800000 | |
1966 | 51.000000 | 60.000000 | 7.900000 | |
1967 | 4444.000000 | 112.000000 | 8.000000 | |
1968 | 89.000000 | 83.000000 | 7.400000 | |
... | ... | ... | ... | ... |
韩国 | 2012 | 5812.542857 | 100.771429 | 6.035238 |
2013 | 10470.370370 | 97.731481 | 6.062037 | |
2014 | 3776.266667 | 98.666667 | 5.650833 | |
2015 | 3209.247706 | 100.266055 | 5.423853 | |
2016 | 1739.850000 | 106.100000 | 5.730000 |
1578 rows × 3 columns
获得每个地区,每一年的电影的评分的均值
In [ ]:
means = group = df["评分"].groupby([df["产地"], df["年代"]]).mean() means
Out[ ]:
产地 年代 中国台湾 1963 6.4000001965 6.8000001966 7.9000001967 8.0000001968 7.400000... 韩国 2012 6.0352382013 6.0620372014 5.6508332015 5.4238532016 5.730000 Name: 评分, Length: 1578, dtype: float64
Series通过unstack方法转化为dataframe
会产生缺失值
In [ ]:
means.unstack().T
Out[ ]:
产地 | 中国台湾 | 中国大陆 | 中国香港 | 丹麦 | 俄罗斯 | 其他 | 加拿大 | 印度 | 墨西哥 | 巴西 | ... | 波兰 | 泰国 | 澳大利亚 | 瑞典 | 美国 | 英国 | 荷兰 | 西班牙 | 阿根廷 | 韩国 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
年代 | |||||||||||||||||||||
1888 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | 7.950000 | NaN | NaN | NaN | NaN |
1890 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | 4.800000 | NaN | NaN | NaN | NaN | NaN |
1892 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1894 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | 6.450000 | NaN | NaN | NaN | NaN | NaN |
1895 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2013 | 7.076471 | 5.306500 | 6.105714 | 6.555556 | 6.875000 | 6.853571 | 6.018182 | 6.400000 | 6.983333 | 8.00 | ... | 6.966667 | 5.568000 | 6.76000 | 7.100 | 6.308255 | 7.460140 | 6.33 | 6.358333 | 6.616667 | 6.062037 |
2014 | 6.522222 | 4.963830 | 5.616667 | 7.120000 | 7.175000 | 6.596250 | 5.921739 | 6.374194 | 7.250000 | 6.86 | ... | 7.060000 | 5.653571 | 6.56875 | 6.960 | 6.393056 | 7.253398 | 7.30 | 6.868750 | 7.150000 | 5.650833 |
2015 | 6.576000 | 4.969189 | 5.589189 | 7.166667 | 7.342857 | 6.732727 | 6.018750 | 6.736364 | 6.500000 | 6.76 | ... | 6.300000 | 5.846667 | 6.88000 | 7.625 | 6.231486 | 7.123256 | 6.70 | 6.514286 | 7.233333 | 5.423853 |
2016 | NaN | 4.712000 | 5.390909 | 7.000000 | NaN | 6.833333 | 6.200000 | 6.900000 | NaN | NaN | ... | NaN | NaN | NaN | NaN | 6.522581 | 7.200000 | NaN | NaN | NaN | 5.730000 |
2018 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | 6.935704 | NaN | NaN | NaN | NaN | NaN |
127 rows × 25 columns
3.3 离散化处理
在实际的数据分析项目中,对有的数据属性,我们往往并不关注数据的绝对取值,只关心它所处的区间或者等级
比如,我们不关心具体是9.6还是9.7,都是高分电影,注意的是它所在的等级,可以把评分9分及以上的电影定义为A,7到9分定义为B,5到7分定义为C,3到5分定义为D,小于3分定义为E。
离散化也可称为分组、区间化。
Pandas为我们提供了方便的函数cut():
pd.cut(x,bins,right = True,labels = None, retbins = False,precision = 3,include_lowest = False) 参数解释:
x:需要离散化的数组、Series、DataFrame对象
bins:分组的依据,right = True右闭,include_lowest = False左开,默认左开右闭,可以自己调整。
labels:是否要用标记来替换返回出来的数组,retbins:返回x当中每一个值对应的bins的列表,precision精度。
In [ ]:
df["评分等级"] = pd.cut(df["评分"], [0,3,5,7,9,10], labels = ['E','D','C','B','A']) #labels要和区间划分一一对应 df[0:5]
Out[ ]:
年代 | 产地 | 名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | 评分等级 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1994 | 美国 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 00:00:00 | 142 | 9.6 | 多伦多电影节 | A |
1 | 1957 | 美国 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 1957-12-17 00:00:00 | 116 | 9.5 | 美国 | A |
2 | 1997 | 意大利 | 美丽人生 | 327855 | 剧情/喜剧/爱情 | 1997-12-20 00:00:00 | 116 | 9.5 | 意大利 | A |
3 | 1994 | 美国 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 00:00:00 | 142 | 9.4 | 洛杉矶首映 | A |
4 | 1993 | 中国大陆 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 1993-01-01 00:00:00 | 171 | 9.4 | 香港 | A |
同样的,我们可以根据投票人数来刻画电影的热门
投票越多的热门程度越高
In [ ]:
bins = np.percentile(df["投票人数"], [0,20,40,60,80,100]) #获取分位数 df["热门程度"] = pd.cut(df["投票人数"],bins,labels = ['E','D','C','B','A']) df[:5]
Out[ ]:
年代 | 产地 | 名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | 评分等级 | 热门程度 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1994 | 美国 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 00:00:00 | 142 | 9.6 | 多伦多电影节 | A | A |
1 | 1957 | 美国 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 1957-12-17 00:00:00 | 116 | 9.5 | 美国 | A | A |
2 | 1997 | 意大利 | 美丽人生 | 327855 | 剧情/喜剧/爱情 | 1997-12-20 00:00:00 | 116 | 9.5 | 意大利 | A | A |
3 | 1994 | 美国 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 00:00:00 | 142 | 9.4 | 洛杉矶首映 | A | A |
4 | 1993 | 中国大陆 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 1993-01-01 00:00:00 | 171 | 9.4 | 香港 | A | A |
大烂片集合:投票人数很多,评分很低
遗憾的是,我们可以发现,烂片几乎都是中国大陆的
In [ ]:
df[(df.热门程度 == 'A') & (df.评分等级 == 'E')]
Out[ ]:
年代 | 产地 | 名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | 评分等级 | 热门程度 | |
---|---|---|---|---|---|---|---|---|---|---|---|
623 | 2011 | 中国大陆 | B区 | 5187 | 剧情/惊悚/恐怖 | 2011-06-03 00:00:00 | 89 | 2.3 | 中国大陆 | E | A |
4167 | 2014 | 中国大陆 | 怖偶 | 4867 | 悬疑/惊悚 | 2014-05-07 00:00:00 | 88 | 2.8 | 中国大陆 | E | A |
5200 | 2011 | 中国大陆 | 床下有人 | 4309 | 悬疑/惊悚 | 2011-10-14 00:00:00 | 100 | 2.8 | 中国大陆 | E | A |
6585 | 2013 | 中国大陆 | 帝国秘符 | 4351 | 动作/冒险 | 2013-09-18 00:00:00 | 93 | 3.0 | 中国大陆 | E | A |
8009 | 2011 | 中国大陆 | 飞天 | 4764 | 剧情 | 2011-07-01 00:00:00 | 115 | 2.9 | 中国大陆 | E | A |
8181 | 2014 | 中国大陆 | 分手达人 | 3937 | 喜剧/爱情 | 2014-06-06 00:00:00 | 90 | 2.7 | 中国大陆 | E | A |
9372 | 2012 | 中国大陆 | 孤岛惊魂 | 2982 | 悬疑/惊悚/恐怖 | 2013-01-26 00:00:00 | 93 | 2.8 | 中国大陆 | E | A |
10275 | 2013 | 中国大陆 | 海天盛宴·韦口 | 3788 | 情色 | 2013-10-12 00:00:00 | 88 | 2.9 | 网络 | E | A |
16512 | 2013 | 中国大陆 | 孪生密码 | 6390 | 动作/悬疑 | 2013-11-08 00:00:00 | 96 | 2.9 | 中国大陆 | E | A |
21189 | 2010 | 日本 | 拳皇 | 6329 | 动作/科幻/冒险 | 2012-10-12 00:00:00 | 93 | 3.0 | 中国大陆 | E | A |
22348 | 2013 | 中国大陆 | 闪魂 | 3119 | 惊悚/犯罪 | 2014-02-21 00:00:00 | 94 | 2.6 | 中国大陆 | E | A |
22524 | 2015 | 中国大陆 | 少年毛泽东 | 3058 | 动画/儿童/冒险 | 2015-04-30 00:00:00 | 76 | 2.4 | 中国大陆 | E | A |
23754 | 2013 | 英国 | 史前怪兽 | 3543 | 动作/惊悚/冒险 | 2014-01-01 00:00:00 | 89 | 3.0 | 中国大陆 | E | A |
27832 | 2011 | 中国大陆 | 无极限之危情速递 | 6319 | 喜剧/动作/爱情/冒险 | 2011-08-12 00:00:00 | 94 | 2.8 | 中国大陆 | E | A |
31622 | 2010 | 中国大陆 | 异度公寓 | 3639 | 惊悚 | 2010-06-04 00:00:00 | 93 | 2.7 | 中国大陆 | E | A |
32007 | 2014 | 中国大陆 | 英雄之战 | 8359 | 动作/爱情 | 2014-03-21 00:00:00 | 90 | 3.0 | 中国大陆 | E | A |
32180 | 2013 | 中国大陆 | 咏春小龙 | 8861 | 剧情/动作 | 2013-07-20 00:00:00 | 90 | 3.0 | 中国大陆 | E | A |
32990 | 2014 | 中国大陆 | 再爱一次好不好 | 6999 | 喜剧/爱情 | 2014-04-11 00:00:00 | 94 | 3.0 | 中国大陆 | E | A |
38090 | 2014 | 中国大陆 | 大话天仙 | 21629 | 喜剧/奇幻/古装 | 2014-02-02 00:00:00 | 91 | 3.0 | 中国大陆 | E | A |
38092 | 2013 | 中国大陆 | 天机·富春山居图 | 74709 | 动作/冒险 | 2013-06-09 00:00:00 | 122 | 2.9 | 中国大陆 | E | A |
38093 | 2014 | 中国大陆 | 特工艾米拉 | 10852 | 动作/悬疑 | 2014-04-11 00:00:00 | 96 | 2.7 | 中国大陆 | E | A |
38097 | 2015 | 中国大陆 | 汽车人总动员 | 12892 | 喜剧/动画/冒险 | 2015-07-03 00:00:00 | 85 | 2.3 | 中国大陆 | E | A |
38102 | 2016 | 中国大陆 | 2016年中央电视台春节 | 17328 | 歌舞/真人秀 | 2016-02-07 00:00:00 | 280 | 2.3 | 中国大陆 | E | A |
38108 | 2014 | 中国大陆 | 放手爱 | 29254 | 喜剧/爱情 | 2014-04-30 00:00:00 | 93 | 2.3 | 中国大陆 | E | A |
冷门高分电影
In [ ]:
df[(df.热门程度 == 'E') & (df.评分等级 == 'A')]
Out[ ]:
年代 | 产地 | 名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | 评分等级 | 热门程度 | |
---|---|---|---|---|---|---|---|---|---|---|---|
563 | 2011 | 英国 | BBC喜剧音 | 38 | 喜剧/音乐/歌舞 | 2011-08-13 00:00:00 | 95 | 9.3 | 美国 | A | E |
895 | 2014 | 日本 | JOJO的奇妙冒险 特别见面会 Walk Like Crusade | 36 | 纪录片 | 2014-10-26 00:00:00 | 137 | 9.3 | 美国 | A | E |
1099 | 2012 | 英国 | Pond一家最 | 45 | 纪录片 | 2012-09-29 00:00:00 | 12 | 9.2 | 美国 | A | E |
1540 | 2007 | 英国 | 阿森纳:温格的十一人 | 74 | 运动 | 2007-10-22 00:00:00 | 78 | 9.5 | 美国 | A | E |
1547 | 2009 | 英国 | 阿斯加德远征 | 59 | 纪录片 | 2011-09-17 00:00:00 | 85 | 9.3 | 美国 | A | E |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
36846 | 2012 | 中国大陆 | 末了,未了 | 34 | 剧情/喜剧/爱情 | 2012-12-16 00:00:00 | 90 | 9.5 | 美国 | A | E |
37000 | 2015 | 中国大陆 | 身经百战 | 74 | 纪录片 | 2015-03-24 00:00:00 | 91 | 9.1 | 美国 | A | E |
37033 | 1986 | 英国 | 歌唱神探 | 36 | 剧情/悬疑/歌舞 | 1986-11-16 00:00:00 | 415 | 9.1 | 美国 | A | E |
37557 | 1975 | 美国 | 山那边 | 70 | 剧情 | 1975-11-14 00:00:00 | 103 | 9.1 | 美国 | A | E |
37883 | 2015 | 美国 | 奎 | 62 | 纪录片/短片 | 2015-08-19 00:00:00 | 9 | 9.1 | 纽约电影论坛 | A | E |
177 rows × 11 columns
将处理后的数据进行保存
In [ ]:
df.to_excel("movie_data3.xlsx")
3.4 合并数据集
( 1 )append
先把数据集拆分为多个,再进行合并
In [ ]:
df_usa = df[df.产地 == "美国"] df_china = df[df.产地 == "中国大陆"]
In [ ]:
df_china.append(df_usa) #直接追加到后面,最好是变量相同的
Out[ ]:
年代 | 产地 | 名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | 评分等级 | 热门程度 | |
---|---|---|---|---|---|---|---|---|---|---|---|
4 | 1993 | 中国大陆 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 1993-01-01 00:00:00 | 171 | 9.400000 | 香港 | A | A |
21 | 1961 | 中国大陆 | 大闹天宫 | 74881 | 动画/奇幻 | 1905-05-14 00:00:00 | 114 | 9.200000 | 上集 | A | A |
29 | 2015 | 中国大陆 | 穹顶之下 | 51113 | 纪录片 | 2015-02-28 00:00:00 | 104 | 9.200000 | 中国大陆 | A | A |
38 | 1982 | 中国大陆 | 茶馆 | 10678 | 剧情/历史 | 1905-06-04 00:00:00 | 118 | 9.200000 | 美国 | A | A |
45 | 1988 | 中国大陆 | 山水情 | 10781 | 动画/短片 | 1905-06-10 00:00:00 | 19 | 9.200000 | 美国 | A | A |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
38151 | 1987 | 美国 | 零下的激情 | 199 | 剧情/爱情/犯罪 | 1987-11-06 00:00:00 | 98 | 7.400000 | 美国 | B | D |
38153 | 1986 | 美国 | 离别秋波 | 240 | 剧情/爱情/音乐 | 1986-02-19 00:00:00 | 90 | 8.200000 | 美国 | B | C |
38156 | 1986 | 美国 | 极乐森林 | 45 | 纪录片 | 1986-09-14 00:00:00 | 90 | 8.100000 | 美国 | B | E |
38158 | 1935 | 美国 | 1935年 | 57 | 喜剧/歌舞 | 1935-03-15 00:00:00 | 98 | 7.600000 | 美国 | B | E |
38162 | 2018 | 美国 | 复仇者联盟3 | 123456 | 剧情/科幻 | 2018-05-04 00:00:00 | 142 | 6.935704 | 美国 | C | A |
15505 rows × 11 columns
将这两个数据集进行合并
( 2 )merge
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)
我们选取6部热门电影
In [ ]:
df1 = df.loc[:5] df1
Out[ ]:
年代 | 产地 | 名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | 评分等级 | 热门程度 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1994 | 美国 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 00:00:00 | 142 | 9.6 | 多伦多电影节 | A | A |
1 | 1957 | 美国 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 1957-12-17 00:00:00 | 116 | 9.5 | 美国 | A | A |
2 | 1997 | 意大利 | 美丽人生 | 327855 | 剧情/喜剧/爱情 | 1997-12-20 00:00:00 | 116 | 9.5 | 意大利 | A | A |
3 | 1994 | 美国 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 00:00:00 | 142 | 9.4 | 洛杉矶首映 | A | A |
4 | 1993 | 中国大陆 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 1993-01-01 00:00:00 | 171 | 9.4 | 香港 | A | A |
5 | 2012 | 美国 | 泰坦尼克号 | 157074 | 剧情/爱情/灾难 | 2012-04-10 00:00:00 | 194 | 9.4 | 中国大陆 | A | A |
In [ ]:
df2 = df.loc[:5][["名字","产地"]] df2["票房"] = [123344,23454,55556,333,6666,444]
In [ ]:
df2
Out[ ]:
名字 | 产地 | 票房 | |
---|---|---|---|
0 | 肖申克的救赎 | 美国 | 123344 |
1 | 控方证人 | 美国 | 23454 |
2 | 美丽人生 | 意大利 | 55556 |
3 | 阿甘正传 | 美国 | 333 |
4 | 霸王别姬 | 中国大陆 | 6666 |
5 | 泰坦尼克号 | 美国 | 444 |
In [ ]:
df2 = df2.sample(frac = 1) #打乱数据,但index还是原来那样
In [ ]:
df2.index = range(len(df2)) df2
Out[ ]:
名字 | 产地 | 票房 | |
---|---|---|---|
0 | 泰坦尼克号 | 美国 | 444 |
1 | 美丽人生 | 意大利 | 55556 |
2 | 霸王别姬 | 中国大陆 | 6666 |
3 | 肖申克的救赎 | 美国 | 123344 |
4 | 阿甘正传 | 美国 | 333 |
5 | 控方证人 | 美国 | 23454 |
现在,我们需要把df1和df2合并
我们发现,df2有票房数据,df1有评分等其他信息
由于样本的顺序不一致,因此不能直接采取直接复制的方法
In [ ]:
pd.merge(df1, df2, how = "inner", on = "名字")
Out[ ]:
年代 | 产地_x | 名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | 评分等级 | 热门程度 | 产地_y | 票房 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1994 | 美国 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 00:00:00 | 142 | 9.6 | 多伦多电影节 | A | A | 美国 | 123344 |
1 | 1957 | 美国 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 1957-12-17 00:00:00 | 116 | 9.5 | 美国 | A | A | 美国 | 23454 |
2 | 1997 | 意大利 | 美丽人生 | 327855 | 剧情/喜剧/爱情 | 1997-12-20 00:00:00 | 116 | 9.5 | 意大利 | A | A | 意大利 | 55556 |
3 | 1994 | 美国 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 00:00:00 | 142 | 9.4 | 洛杉矶首映 | A | A | 美国 | 333 |
4 | 1993 | 中国大陆 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 1993-01-01 00:00:00 | 171 | 9.4 | 香港 | A | A | 中国大陆 | 6666 |
5 | 2012 | 美国 | 泰坦尼克号 | 157074 | 剧情/爱情/灾难 | 2012-04-10 00:00:00 | 194 | 9.4 | 中国大陆 | A | A | 美国 | 444 |
由于两个数据集都存在产地,因此合并后会有两个产地信息
( 3 )concat
将多个数据集进行批量合并
In [ ]:
df1 = df[:10] df2 = df[100:110] df3 = df[200:210] dff = pd.concat([df1,df2,df3],axis = 0) #默认axis = 0,列拼接需要修改为1 dff
Out[ ]:
年代 | 产地 | 名字 | 投票人数 | 类型 | 上映时间 | 时长 | 评分 | 首映地点 | 评分等级 | 热门程度 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1994 | 美国 | 肖申克的救赎 | 692795 | 剧情/犯罪 | 1994-09-10 00:00:00 | 142 | 9.6 | 多伦多电影节 | A | A |
1 | 1957 | 美国 | 控方证人 | 42995 | 剧情/悬疑/犯罪 | 1957-12-17 00:00:00 | 116 | 9.5 | 美国 | A | A |
2 | 1997 | 意大利 | 美丽人生 | 327855 | 剧情/喜剧/爱情 | 1997-12-20 00:00:00 | 116 | 9.5 | 意大利 | A | A |
3 | 1994 | 美国 | 阿甘正传 | 580897 | 剧情/爱情 | 1994-06-23 00:00:00 | 142 | 9.4 | 洛杉矶首映 | A | A |
4 | 1993 | 中国大陆 | 霸王别姬 | 478523 | 剧情/爱情/同性 | 1993-01-01 00:00:00 | 171 | 9.4 | 香港 | A | A |
5 | 2012 | 美国 | 泰坦尼克号 | 157074 | 剧情/爱情/灾难 | 2012-04-10 00:00:00 | 194 | 9.4 | 中国大陆 | A | A |
6 | 1993 | 美国 | 辛德勒的名单 | 306904 | 剧情/历史/战争 | 1993-11-30 00:00:00 | 195 | 9.4 | 华盛顿首映 | A | A |
7 | 1997 | 日本 | 新世纪福音战士剧场版:Air/真心为你 新世紀エヴァンゲリオン劇場版 Ai | 24355 | 剧情/动作/科幻/动画/奇幻 | 1997-07-19 00:00:00 | 87 | 9.4 | 日本 | A | A |
8 | 2013 | 日本 | 银魂完结篇:直到永远的万事屋 劇場版 銀魂 完結篇 万事屋よ | 21513 | 剧情/动画 | 2013-07-06 00:00:00 | 110 | 9.4 | 日本 | A | A |
9 | 1994 | 法国 | 这个杀手不太冷 | 662552 | 剧情/动作/犯罪 | 1994-09-14 00:00:00 | 133 | 9.4 | 法国 | A | A |
100 | 1993 | 韩国 | 101 | 146 | 喜剧/爱情 | 1993-06-19 00:00:00 | 112 | 7.4 | 韩国 | B | D |
101 | 1995 | 英国 | 10 | 186 | 喜剧 | 1995-01-25 00:00:00 | 101 | 7.4 | 美国 | B | D |
102 | 2013 | 韩国 | 素媛 | 114819 | 剧情/家庭 | 2013-10-02 00:00:00 | 123 | 9.1 | 韩国 | A | A |
103 | 2003 | 美国 | 101忠狗续集:伦敦 | 924 | 喜剧/动画/家庭 | 2003-01-21 00:00:00 | 70 | 7.5 | 美国 | B | B |
104 | 2000 | 美国 | 10 | 9514 | 喜剧/家庭 | 2000-09-22 00:00:00 | 100 | 7.0 | 美国 | C | A |
105 | 2013 | 韩国 | 10 | 601 | 剧情 | 2014-04-24 00:00:00 | 93 | 7.2 | 美国 | B | C |
106 | 2006 | 美国 | 10件或 | 1770 | 剧情/喜剧/爱情 | 2006-12-01 00:00:00 | 82 | 7.7 | 美国 | B | B |
107 | 2014 | 美国 | 10年 | 1531 | 喜剧/同性 | 2015-06-02 00:00:00 | 90 | 6.9 | 美国 | C | B |
108 | 2012 | 日本 | 11·25自决之日 三岛由纪夫与年轻人们 11・25自決の | 149 | 剧情 | 2012-06-02 00:00:00 | 119 | 5.6 | 日本 | C | D |
109 | 1997 | 美国 | 泰坦尼克号 | 535491 | 剧情/爱情/灾难 | 1998-04-03 00:00:00 | 194 | 9.1 | 中国大陆 | A | A |
200 | 2014 | 日本 | 最完美的离婚 2014特别篇 | 18478 | 剧情/喜剧/爱情 | 2014-02-08 00:00:00 | 120 | 9.1 | 日本 | A | A |
201 | 2009 | 日本 | 2001夜物 | 84 | 剧情/动画 | 2009-10-02 00:00:00 | 80 | 6.6 | 美国 | C | D |
202 | 2009 | 中国香港 | 头七 頭 | 7039 | 恐怖 | 2009-05-21 00:00:00 | 60 | 6.2 | 美国 | C | A |
203 | 1896 | 法国 | 火车进站 L | 7001 | 纪录片/短片 | 1896-01-06 | 60 | 8.8 | 法国 | B | A |
204 | 2009 | 美国 | 银行舞蹈 | 6944 | 短片 | 1905-07-01 00:00:00 | 60 | 7.8 | 美国 | B | A |
205 | 2003 | 荷兰 | 2003提雅 | 48 | 音乐 | 2003-10-07 00:00:00 | 200 | 8.9 | 美国 | B | E |
206 | 2012 | 美国 | 死亡飞车3:地狱烈 | 6937 | 动作 | 2012-12-12 00:00:00 | 60 | 5.8 | 美国 | C | A |
207 | 2012 | 日本 | 时光钟摆 振り | 6876 | 剧情/动画/短片 | 2012-03-20 00:00:00 | 60 | 8.7 | 美国 | B | A |
208 | 2011 | 中国香港 | 你还可爱么 你還可愛 | 6805 | 短片 | 2011-04-22 00:00:00 | 60 | 8.3 | 美国 | B | A |
209 | 2002 | 中国香港 | 一碌蔗 | 6799 | 剧情/喜剧/爱情 | 2002-09-19 00:00:00 | 60 | 6.7 | 美国 | C | A |
python数据分析之Pandas-3相关推荐
- python常用命令汇总-python数据分析之pandas常用命令整理
原标题:python数据分析之pandas常用命令整理 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型 ,提供了高效地 ...
- python 数据分析day4 Pandas 之 DataFrame
DataFrame 一. 创建DataFrame 1. 二维数组创建 2. 字典创建 3. JSON创建 4. 读取Excel或CSV文件创建 5. 读数据库(MySQL)创建 二. 常用属性 三. ...
- Python数据分析之Pandas库
Python数据分析之Pandas库 一.Pandas简介 二.Pandas库的安装 三.Pandas的数据结构 四.Series 和 DataFrame 数据结构的使用 五.其他可以参考的网站 一. ...
- pandas 排序 给excel_懂Excel轻松入门Python数据分析包pandas(二十五):循环序列分组...
此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd 转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的) 经常听别人说 ...
- pandas 排序_懂Excel就能轻松入门Python数据分析包pandas(六):排序
转发本文并私信我"python",即可获得Python资料以及各种心得(持续更新的) 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死.后来 ...
- (转载)Python数据分析之pandas学习
转载地址:http://www.cnblogs.com/nxld/p/6058591.html Python中的pandas模块进行数据分析. 接下来pandas介绍中将学习到如下8块内容: 1.数据 ...
- c++控制台应用每一列数据如何对齐_懂Excel就能轻松入门Python数据分析包pandas(十六):合并数据...
此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd 转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的) 经常听别人说 ...
- pandas 更改单元格的值_懂Excel轻松入门Python数据分析包pandas(二十四):连续区域...
此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd 转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的) 经常听别人说 ...
- excel处置4000行数据卡_懂Excel就能轻松入门Python数据分析包pandas(三):制作成绩条...
系列文章: 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死.后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器-- pandas 前言 很 ...
- 可自定义匹配规则查找控件_懂Excel轻松入门Python数据分析包pandas(二十八):二分法查找...
此系列文章收录在公众号中:数据大宇宙 > 数据处理 > E-pd 转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的) 经常听别人说 ...
最新文章
- 是时候取消Sprint评审会议了吗?
- php iframe 上传图片,利用iframe+php实现图片的上传
- linux使用lftp文件自动认证上传下载
- android 根据bounds坐标进行点击操作_炫酷的Android时钟UI控件,隔壁产品都馋哭了...
- Windows移动开发(二)——闭关修炼
- 2016TI杯——寻迹小车
- Temami防辐射服为爱起航
- beyond-compare 命令行工具
- 如何隐藏QDockWidget的标题栏
- 用GUI自动控制键盘和鼠标
- 时间字符串转中国标准时间转时间戳转年月日格式
- java如何将图片转为pdf
- 实验二 利用Excel表格进行掷骰子模拟实验
- 如何巧妙实现文字变语音?其实文字转语音助手就很好
- MATLAB2018a Simulink生成CCS代码教程
- 开源物联网平台ThingsBoard数据库40张数据表设计一览
- 重装系统后通过修改注册表实现记录还原
- 看似简单的任务-分享二维码图片到微信(分享图片的生成)
- AFNetworking
- 常见接口形式(分类)有哪些?