2017千人计划青年科学家星座分布 –用python测试星座的科学性

在生信媛微信公众号看到一篇《对青年千人表格信息的可视化探索》(https://github.com/wandering513/Data_workshop,中间有一个分析是关于千人青年们的出生年月的,没有细化到星座,我决定细化到星座来检测一下星座是否科学。

作者是使用R的,用得熟练,我作为一个R初学者,难以完成这样的任务,只好祭出我的菜鸟python,至少能用来解决问题。其实是一个很简单的问题,只要建立一个字典,然后把千人青年们的出生日期处理一下对应上去。把生日变成了小数,本来是做了一个星座:星座日期的列表的字典,运行过程 中发现列表不能作为字典的键值,因为我要把日期对应星座的时候需要对调字典的键值,所以就改成了字符串:字符串形式的字典。尽管代码不是最好的,但是,还是完成了任务,代码 如下:

fin = open('1000.txt','r')

def get_astro():
    astro_dict = {}
    dict_of_date = { '水瓶':'1.20-2.18', '摩羯':'0.00-0.0',\
                    '双鱼':'2.19-3.20',  '白羊':'3.21-4.19', \
                    '金牛':'4.20-5.20', '双子':'5.21-6.21', \
                    '巨蟹':'6.22-7.22', '狮子':'7.23-8.22', \
                    '处女':'8.23-9.22', '天秤':'9.23-10.23', \
                    '天蝎':'10.24-11.22', '射手':'11.23-12.21'
                    } #'摩羯':'12.22-1.19',

    new_dict = {v:k for k,v in dict_of_date.items()}

    for b in dict_of_date.keys():
        astro_dict[b] = 0

    for line in fin:
        birthday = line.strip().split('\t')[3].split('/')[1:]
        birthday = birthday[0] + '.' + birthday[1]
        birthday = float(birthday)
        #print(birthday)
        if birthday > 12.21 or birthday <= 1.19:
            astro_dict['摩羯'] += 1
        else:
            for a in dict_of_date.values():
                if float(a.split('-')[0]) <= birthday <= float(a.split('-')[1]):
                    astro_dict[new_dict.get(a)] += 1
        #print(astro_dict)
        #break

    print(astro_dict)


get_astro()

因为只有600多人,秒得到了结果,结果如下:

'水瓶': 46, '摩羯': 49, '双鱼': 56, '白羊': 41, '金牛': 50, '双子':\ 48, '巨蟹': 42, '狮子': 43, '处女': 62, '天秤': 63, '天蝎': 63, \ '射手': 67

我也来个可视化,不过是excel的:

结果表明,基本上与星座没有什么关系嘛,600人的数据,应该不小了,哪天可以再选个大点的试试。

我的个人博客:https://jiawen.zd200572.comwww.zd200572.com

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注