Pandas文本数据分析

import pandas as pd
df = pd.read_csv('superstarinfo.txt')
df.head()
序号中文名性别国籍民族星座血型身高体重出生地出生日期毕业院校代表作品
01赵丽颖中国汉族天秤座A型165cm44.6kg河北省廊坊市1987年10月16日NaN花千骨、楚乔传、陆贞传奇、杉杉来了、知否知否应是绿肥红瘦、乘风破浪、西游记女儿国
12迪丽热巴中国维吾尔族双子座NaN168cmNaN新疆维吾尔自治区乌鲁木齐市1992年6月3日上海戏剧学院阿娜尔罕、克拉恋人、漂亮的李慧珍、三生三世十里桃花、烈火如歌、一千零一夜、傲娇与偏见
23周杰伦中国汉族摩羯座O型175cmNaN台湾省新北市1979年1月18日淡江中学星晴、龙卷风、简单爱、双截棍、晴天、以父之名、东风破、七里香、青花瓷、彩虹、稻香、告白气球
34杨幂中国汉族处女座B型166.5cmNaN北京市1986年9月12日北京电影学院宫锁心玉、三生三世十里桃花、小时代、我是证人、逆时营救、仙剑奇侠传三、亲爱的翻译官、王昭君
45胡歌中国汉族处女座O型185cm70kg上海市徐汇区1982年9月20日(农历八月初四)上海戏剧学院仙剑奇侠传、天外飞仙、仙剑奇侠传三、神话、伪装者、琅琊榜、大好时光、猎场
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 13 columns):
序号      100 non-null int64
中文名     100 non-null object
性别      100 non-null object
国籍      100 non-null object
民族      95 non-null object
星座      91 non-null object
血型      80 non-null object
身高      95 non-null object
体重      69 non-null object
出生地     99 non-null object
出生日期    100 non-null object
毕业院校    88 non-null object
代表作品    93 non-null object
dtypes: int64(1), object(12)
memory usage: 10.2+ KB
df = df.set_index('序号')

(1)男女明星数量各是多少?

a = len(df[df['性别'] == '女'])
b = len(df[df['性别'] == '男'])
c = len(df[df['性别'] != '男']) - len(df[df['性别'] == '女'])
print('男明星的人数为:%s'%b)
print('女明星的人数为:%s'%a)
print('性别不详的人数为:%s'%c)
男明星的人数为:59
女明星的人数为:40
性别不详的人数为:1

(2)明星的年龄分布情况?

# str.extract(r'(\d+)', expand=True) python正则表达式
df['age'] = df['出生日期'].str.extract(r'(\d+)', expand=True)
df['age'] = 2020 - df['age'].astype('int')
df.head()
中文名性别国籍民族星座血型身高体重出生地出生日期毕业院校代表作品age
序号
1赵丽颖中国汉族天秤座A型165cm44.6kg河北省廊坊市1987年10月16日NaN花千骨、楚乔传、陆贞传奇、杉杉来了、知否知否应是绿肥红瘦、乘风破浪、西游记女儿国33
2迪丽热巴中国维吾尔族双子座NaN168cmNaN新疆维吾尔自治区乌鲁木齐市1992年6月3日上海戏剧学院阿娜尔罕、克拉恋人、漂亮的李慧珍、三生三世十里桃花、烈火如歌、一千零一夜、傲娇与偏见28
3周杰伦中国汉族摩羯座O型175cmNaN台湾省新北市1979年1月18日淡江中学星晴、龙卷风、简单爱、双截棍、晴天、以父之名、东风破、七里香、青花瓷、彩虹、稻香、告白气球41
4杨幂中国汉族处女座B型166.5cmNaN北京市1986年9月12日北京电影学院宫锁心玉、三生三世十里桃花、小时代、我是证人、逆时营救、仙剑奇侠传三、亲爱的翻译官、王昭君34
5胡歌中国汉族处女座O型185cm70kg上海市徐汇区1982年9月20日(农历八月初四)上海戏剧学院仙剑奇侠传、天外飞仙、仙剑奇侠传三、神话、伪装者、琅琊榜、大好时光、猎场38
df['age'].describe()
count    100.00000
mean      38.69000
std        9.93585
min       20.00000
25%       32.00000
50%       38.00000
75%       44.25000
max       66.00000
Name: age, dtype: float64
import matplotlib.pyplot as plt #导入图像库
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

plt.figure(figsize = (15,10)) #创建图像区域,指定比例
df['age'].plot(kind='box')

在这里插入图片描述

(3)什么星座的明星最受欢迎?

def XZ(name):
    num = len(df[df['星座'] == name])
    return num
name = ['白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座','摩羯座','水瓶座','双鱼座']
dic = {}
sum = 0
for i in name:
    num = XZ(i)
    #print('{}的明星有{}位'.format(i,num))
    sum = sum + num
    dic[i] = num
#print('未知星座的明星有{}位',len(df)-sum)
dic['other'] = len(df) - sum
print(dic)
print('最受欢迎的星座是:{},共有{}位明星'.format(max(dic, key=dic.get),dic[max(dic, key=dic.get)]))
{'白羊座': 9, '金牛座': 5, '双子座': 3, '巨蟹座': 5, '狮子座': 6, '处女座': 13, '天秤座': 17, '天蝎座': 4, '射手座': 7, '摩羯座': 7, '水瓶座': 6, '双鱼座': 9, 'other': 9}
最受欢迎的星座是:天秤座,共有17位明星

(4)能够查询任意一个明星与其他明星的合作情况?

df.head()
中文名性别国籍民族星座血型身高体重出生地出生日期毕业院校代表作品age
序号
1赵丽颖中国汉族天秤座A型165cm44.6kg河北省廊坊市1987年10月16日NaN花千骨、楚乔传、陆贞传奇、杉杉来了、知否知否应是绿肥红瘦、乘风破浪、西游记女儿国33
2迪丽热巴中国维吾尔族双子座NaN168cmNaN新疆维吾尔自治区乌鲁木齐市1992年6月3日上海戏剧学院阿娜尔罕、克拉恋人、漂亮的李慧珍、三生三世十里桃花、烈火如歌、一千零一夜、傲娇与偏见28
3周杰伦中国汉族摩羯座O型175cmNaN台湾省新北市1979年1月18日淡江中学星晴、龙卷风、简单爱、双截棍、晴天、以父之名、东风破、七里香、青花瓷、彩虹、稻香、告白气球41
4杨幂中国汉族处女座B型166.5cmNaN北京市1986年9月12日北京电影学院宫锁心玉、三生三世十里桃花、小时代、我是证人、逆时营救、仙剑奇侠传三、亲爱的翻译官、王昭君34
5胡歌中国汉族处女座O型185cm70kg上海市徐汇区1982年9月20日(农历八月初四)上海戏剧学院仙剑奇侠传、天外飞仙、仙剑奇侠传三、神话、伪装者、琅琊榜、大好时光、猎场38
def Cooperation(name):
    # 获取索引位置,变为二维数组,变为list,再提取数据
    num = df[df['中文名'] == name].index.values.tolist()[0]
    # 将所有人的作品变为list
    works = df['代表作品'].values
    works = works.astype('str').tolist()
    # 存储有合作关系的人的姓名
    coo_dic = {}
    # 判断是否为空值
    if works[num-1] == 'nan':
        print('%s没有与其它明星合作过'%name)
    else:
        # 提取当前人的作品,并以'、'分割为列表
        work = works[num-1].split('、')
        # print(work)
        # 构造遍历整个表格的循环
        for i in range(len(df)):
            # 提取其他人的作品,不包括自己,并以'、'分割为列表
            if i+1 != num and works[i] != 'nan':
                work_other = works[i].split('、')
                # 构造遍历当前人作品的循环
                for j in work:
                    # 判断当前人的作品是否在其他人的作品出现过
                    if j in work_other:
                        # 存储出现过的人的姓名
                        coo_dic[df['中文名'].values.astype('str').tolist()[i]] = j
    return print(coo_dic)

y_or_n = input('是否退出程序(y/n)')
while y_or_n != 'y':
    name = input('请输入需要查询合作信息明星的姓名:')
    if name in df['中文名'].values.astype('str').tolist():
        Cooperation(name)
    else:
        print('没有该明星的相关信息,输入错误')
    y_or_n = input('是否退出程序(y/n)')
是否退出程序(y/n)n
请输入需要查询合作信息明星的姓名:杨幂
{'迪丽热巴': '三生三世十里桃花', '胡歌': '仙剑奇侠传三', '鹿晗': '我是证人', '唐嫣': '仙剑奇侠传三', '刘诗诗': '仙剑奇侠传三', '黄轩': '亲爱的翻译官', '赵又廷': '三生三世十里桃花', '霍建华': '仙剑奇侠传三'}
是否退出程序(y/n)n
请输入需要查询合作信息明星的姓名:胡歌
{'杨幂': '仙剑奇侠传三', '刘涛': '琅琊榜', '刘亦菲': '仙剑奇侠传', '吴磊': '琅琊榜', '成龙': '神话', '唐嫣': '仙剑奇侠传三', '靳东': '伪装者', '刘诗诗': '仙剑奇侠传三', '王凯': '琅琊榜', '霍建华': '仙剑奇侠传三'}
是否退出程序(y/n)y
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

而又何羡乎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值