您的位置:首页 > 编程语言 > Python开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息