from pandas import DataFrame, read_csv
import matplotlib.pyplot as plt
import pandas as pd
import sys
import matplotlib
from numpy import random #为后面导入random_seed,random_randint,random_names等函数
%matplotlib inline
print('Python version ' + sys.version)
print('Pandas version ' + pd.__version__)
print('Matplotlib version ' + matplotlib.__version__)
# 婴儿名字的初始值
names = ['Bob','Jessica','Mary','John','Mel']
"""
我们调用 random.random() 生成随机数时,每一次生成的数都是随机的。
但是,当我们预先使用 random.seed(x) 设定好种子之后,其中的 x 可以是任意数字,如10,这个时候,先调用它的情况下,使用 random() 生成的随机数将会是同一个。
注意:seed()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
"""
random.seed(500) #seed(500) - 创建一个种子,种子编号500
random_names = [names[random.randint(low=0,high=len(names))] for i in range(1000)]
#randint(low=0, high=len(names)) - 生成一个随机整数,介于 0 和 "names" 列表 的长度之间。
#names[n] - 从 "names" 列表中选择索引值(index)为 n 的名字。
# 显示前10个名字,random_names = 从 names 列表中选在一个随机名字并执行 n 次
random_names[:10]
## 1880年,不同婴儿名字对应的出生数量
births = [random.randint(low=0,high=1000) for i in range(1000)]
births[:10]
BabyDataSet = list(zip(random_names,births))
BabyDataSet[:10]
df = pd.DataFrame(data = BabyDataSet, columns=['Names', 'Births' ])
df[:10]
"""
将 dataframe 导出到一个csv文件中。 我们将导出文件命名为 births1880.csv。 导出csv文件的函数是to_csv。
除非你指定了其他的文件目录,否则导出的文件将保存在和 notebook 文件相同的位置。
我们会使用的参数是index和header。将这两个参数设置为False将会防止索 引(index)和列名(header names)被导出到文件中。
"""
df.to_csv('births1880.txt', index=False, header=False)
Location = r'./births1880.txt'
df = pd.read_csv(Location)
df.info()
"""
数据集里有999条记录
有一列Mary有999个值
有一列968有999个值这两列,一个是numeric(数字型),另外一个是non numeric(非数字型)
"""
df = pd.read_csv(Location, header=None)
df
df = pd.read_csv(Location, names=['Names','Births'])
df.head(5)
name = df.groupby('Names') # 创建一个 groupby 的对象
df = name.sum() # 在 groupby 对象上执行求和(sum)的功能
df
Sorted = df.sort_values(['Births'], ascending=False)
Sorted
df['Births'].plot.bar()
print("The most popular name")
df.sort_values(by='Births', ascending=False)