您当前的位置:首页 > 计算机 > 编程开发 > Python

Python+pandas读取Excel文件并统计演员参演电影数量

时间:12-25来源:作者:点击数:

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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门