Python+pandas读取Excel文件并统计演员参演电影数量
2017-04-09 15:33
821 查看
Excel样本数据请参考Python读取Excel文件并统计演员参演电影
>>> import pandas
as pd
>>> df = pd.read_excel('电影导演演员.xlsx')
>>> df
电影名称 导演 演员
0 电影1 导演1 演员1,演员2,演员3,演员4
1 电影2 导演2 演员3,演员2,演员4,演员5
2 电影3 导演3 演员1,演员5,演员3,演员6
3 电影4 导演1 演员1,演员4,演员3,演员7
4 电影5 导演2 演员1,演员2,演员3,演员8
5 电影6 导演3 演员5,演员7,演员3,演员9
6 电影7 导演4 演员1,演员4,演员6,演员7
7 电影8 导演1 演员1,演员4,演员3,演员8
8 电影9 导演2 演员5,演员4,演员3,演员9
9 电影10 导演3 演员1,演员4,演员5,演员10
10 电影11 导演1 演员1,演员4,演员3,演员11
11 电影12 导演2 演员7,演员4,演员9,演员12
12 电影13 导演3 演员1,演员7,演员3,演员13
13 电影14 导演4 演员10,演员4,演员9,演员14
14 电影15 导演5 演员1,演员8,演员11,演员15
15 电影16 导演6 演员14,演员4,演员13,演员16
>>> pairs = []
>>> for i
in range(len(df)):
actors = df.at[i, '演员'].split(',')
for actor
in actors:
pair = (actor, df.at[i, '电影名称'])
pairs.append(pair)
>>> pairs = sorted(pairs, key=lambda item:int(item[0][2:]))
>>> pairs
[('演员1', '电影1'), ('演员1', '电影3'), ('演员1', '电影4'), ('演员1', '电影5'), ('演员1', '电影7'), ('演员1', '电影8'), ('演员1', '电影10'), ('演员1', '电影11'), ('演员1', '电影13'), ('演员1', '电影15'), ('演员2', '电影1'), ('演员2', '电影2'), ('演员2', '电影5'), ('演员3', '电影1'),
('演员3', '电影2'), ('演员3', '电影3'), ('演员3', '电影4'), ('演员3', '电影5'), ('演员3', '电影6'), ('演员3', '电影8'), ('演员3', '电影9'), ('演员3', '电影11'), ('演员3', '电影13'), ('演员4', '电影1'), ('演员4', '电影2'), ('演员4', '电影4'), ('演员4', '电影7'), ('演员4', '电影8'), ('演员4', '电影9'), ('演员4', '电影10'),
('演员4', '电影11'), ('演员4', '电影12'), ('演员4', '电影14'), ('演员4', '电影16'), ('演员5', '电影2'), ('演员5', '电影3'), ('演员5', '电影6'), ('演员5', '电影9'), ('演员5', '电影10'), ('演员6', '电影3'), ('演员6', '电影7'), ('演员7', '电影4'), ('演员7', '电影6'), ('演员7', '电影7'), ('演员7', '电影12'), ('演员7', '电影13'),
('演员8', '电影5'), ('演员8', '电影8'), ('演员8', '电影15'), ('演员9', '电影6'), ('演员9', '电影9'), ('演员9', '电影12'), ('演员9', '电影14'), ('演员10', '电影10'), ('演员10', '电影14'), ('演员11', '电影11'), ('演员11', '电影15'), ('演员12', '电影12'), ('演员13', '电影13'), ('演员13', '电影16'), ('演员14', '电影14'),
('演员14', '电影16'), ('演员15', '电影15'), ('演员16', '电影16')]
>>> index = [item[0] for item
in pairs]
>>> data = [item[1] for item
in pairs]
>>> df1 = pd.DataFrame({'演员':index,
'电影名称':data})
>>> result = df1.groupby('演员', as_index=False).count()
>>> result
演员 电影名称
0 演员1 10
1 演员10 2
2 演员11 2
3 演员12 1
4 演员13 2
5 演员14 2
6 演员15 1
7 演员16 1
8 演员2 3
9 演员3 10
10 演员4 11
11 演员5 5
12 演员6 2
13 演员7 5
14 演员8 3
15 演员9 4
>>> result.columns = ['演员',
'参演电影数量']
>>> result
演员 参演电影数量
0 演员1 10
1 演员10 2
2 演员11 2
3 演员12 1
4 演员13 2
5 演员14 2
6 演员15 1
7 演员16 1
8 演员2 3
9 演员3 10
10 演员4 11
11 演员5 5
12 演员6 2
13 演员7 5
14 演员8 3
15 演员9 4
>>> result.sort_values('参演电影数量')
演员 参演电影数量
3 演员12 1
6 演员15 1
7 演员16 1
1 演员10 2
2 演员11 2
4 演员13 2
5 演员14 2
12 演员6 2
8 演员2 3
14 演员8 3
15 演员9 4
11 演员5 5
13 演员7 5
0 演员1 10
9 演员3 10
10 演员4 11
>>> import pandas
as pd
>>> df = pd.read_excel('电影导演演员.xlsx')
>>> df
电影名称 导演 演员
0 电影1 导演1 演员1,演员2,演员3,演员4
1 电影2 导演2 演员3,演员2,演员4,演员5
2 电影3 导演3 演员1,演员5,演员3,演员6
3 电影4 导演1 演员1,演员4,演员3,演员7
4 电影5 导演2 演员1,演员2,演员3,演员8
5 电影6 导演3 演员5,演员7,演员3,演员9
6 电影7 导演4 演员1,演员4,演员6,演员7
7 电影8 导演1 演员1,演员4,演员3,演员8
8 电影9 导演2 演员5,演员4,演员3,演员9
9 电影10 导演3 演员1,演员4,演员5,演员10
10 电影11 导演1 演员1,演员4,演员3,演员11
11 电影12 导演2 演员7,演员4,演员9,演员12
12 电影13 导演3 演员1,演员7,演员3,演员13
13 电影14 导演4 演员10,演员4,演员9,演员14
14 电影15 导演5 演员1,演员8,演员11,演员15
15 电影16 导演6 演员14,演员4,演员13,演员16
>>> pairs = []
>>> for i
in range(len(df)):
actors = df.at[i, '演员'].split(',')
for actor
in actors:
pair = (actor, df.at[i, '电影名称'])
pairs.append(pair)
>>> pairs = sorted(pairs, key=lambda item:int(item[0][2:]))
>>> pairs
[('演员1', '电影1'), ('演员1', '电影3'), ('演员1', '电影4'), ('演员1', '电影5'), ('演员1', '电影7'), ('演员1', '电影8'), ('演员1', '电影10'), ('演员1', '电影11'), ('演员1', '电影13'), ('演员1', '电影15'), ('演员2', '电影1'), ('演员2', '电影2'), ('演员2', '电影5'), ('演员3', '电影1'),
('演员3', '电影2'), ('演员3', '电影3'), ('演员3', '电影4'), ('演员3', '电影5'), ('演员3', '电影6'), ('演员3', '电影8'), ('演员3', '电影9'), ('演员3', '电影11'), ('演员3', '电影13'), ('演员4', '电影1'), ('演员4', '电影2'), ('演员4', '电影4'), ('演员4', '电影7'), ('演员4', '电影8'), ('演员4', '电影9'), ('演员4', '电影10'),
('演员4', '电影11'), ('演员4', '电影12'), ('演员4', '电影14'), ('演员4', '电影16'), ('演员5', '电影2'), ('演员5', '电影3'), ('演员5', '电影6'), ('演员5', '电影9'), ('演员5', '电影10'), ('演员6', '电影3'), ('演员6', '电影7'), ('演员7', '电影4'), ('演员7', '电影6'), ('演员7', '电影7'), ('演员7', '电影12'), ('演员7', '电影13'),
('演员8', '电影5'), ('演员8', '电影8'), ('演员8', '电影15'), ('演员9', '电影6'), ('演员9', '电影9'), ('演员9', '电影12'), ('演员9', '电影14'), ('演员10', '电影10'), ('演员10', '电影14'), ('演员11', '电影11'), ('演员11', '电影15'), ('演员12', '电影12'), ('演员13', '电影13'), ('演员13', '电影16'), ('演员14', '电影14'),
('演员14', '电影16'), ('演员15', '电影15'), ('演员16', '电影16')]
>>> index = [item[0] for item
in pairs]
>>> data = [item[1] for item
in pairs]
>>> df1 = pd.DataFrame({'演员':index,
'电影名称':data})
>>> result = df1.groupby('演员', as_index=False).count()
>>> result
演员 电影名称
0 演员1 10
1 演员10 2
2 演员11 2
3 演员12 1
4 演员13 2
5 演员14 2
6 演员15 1
7 演员16 1
8 演员2 3
9 演员3 10
10 演员4 11
11 演员5 5
12 演员6 2
13 演员7 5
14 演员8 3
15 演员9 4
>>> result.columns = ['演员',
'参演电影数量']
>>> result
演员 参演电影数量
0 演员1 10
1 演员10 2
2 演员11 2
3 演员12 1
4 演员13 2
5 演员14 2
6 演员15 1
7 演员16 1
8 演员2 3
9 演员3 10
10 演员4 11
11 演员5 5
12 演员6 2
13 演员7 5
14 演员8 3
15 演员9 4
>>> result.sort_values('参演电影数量')
演员 参演电影数量
3 演员12 1
6 演员15 1
7 演员16 1
1 演员10 2
2 演员11 2
4 演员13 2
5 演员14 2
12 演员6 2
8 演员2 3
14 演员8 3
15 演员9 4
11 演员5 5
13 演员7 5
0 演员1 10
9 演员3 10
10 演员4 11
相关文章推荐
- Python读取Excel文件统计演员参演电影
- Python使用pandas读取Excel文件数据和预处理小案例
- Python读取系统文件夹内所有文件并统计数量的方法
- python中写入csv,excel显示、pandas读取csv文件的编码问题
- Python读取系统文件夹内所有文件并统计数量
- python 读取文件 并实现文件相关操作最后导出excel
- Python3读取UTF-8文件及统计文件行数的方法
- python读取excel文件(xrld模块)
- Python 使用 xlrd 读取 Excel格式文件
- Python使用xlrd读取Excel格式文件的方法
- Python3读取UTF-8文件及统计文件行数的方法
- 用Python读取Excel(*.xls)文件——xlrd模块的使用
- 【python】 读取Excel文件并绘制图表
- python使用xlwt读取文件写入Excel
- Python 实例一 统计指定文件的行数或读取指定文件指定行数的内容
- Python导出数据到Excel可读取的CSV文件的方法
- Python 用win32读取excel文件的奇葩报错
- ArcGIS+Python读取flt文件并进行区域统计
- xlrd---Python中读取excel文件的利器
- python按年份统计文件数量