第2课

创建数据 - 我们从创建自己的数据集开始分析。这可以防止阅读本教程的最终用户为得到下面的结果而不得不下载许多文件。我们将把这个数据集导出到一个文本文件中,这样您就可以获得从文本文件中一些拉取数据的经验。

获取数据 - 我们将学习如何阅读文本文件。这些数据包括婴儿的姓名和1880年出生的婴儿的数量。
准备数据 - 在这里,我们将简单地看一下数据并确保它是干净的。干净,我的意思是我们会看看文本文件的内容并发现任何异常。可能包括缺失的数据,数据中的不一致或任何其他不合适的数据。如果发现这些问题,我们将不得不决定如何处理这些记录。
分析数据 - 我们将简单地找出特定年份中流行的取名倾向。
呈现数据 - 通过表格数据和图表,清楚地向最终用户显示特定年份中最受欢迎的取名。

注意:
确保你已经浏览了以前的所有课程,因为以前课程中学到的知识将用于此练习。

pandas库用于所有数据分析,不包括一小部分的数据呈现部分。 数据呈现部分需要引入 matplotlib 库。导入库是我们在本课中采取的第一步。

In [1]:
#导入本教程所需的所有库
import matplotlib.pyplot as plt
import pandas as pd
import sys
import matplotlib
from numpy import random
In[2]:
 print('Python version ' + sys.version)
print('Pandas version ' + pd.__version__)
print('Matplotlib version ' + matplotlib.__version__)
out[2]:
Python version 3.5.1 |Anaconda custom (64-bit)| (default, Feb 16 2016, 09:49:46) [MSC v.1900 64 bit (AMD64)]
Pandas version 0.20.1
Matplotlib version 1.5.1

创建数据

数据集将包括1,000个宝宝的名字和当年记录的出生人数(1880年)。我们还将添加大量重复项目,以便您多次看到相同的宝贝名称。您可以考虑为每个姓名提供多个条目,简单地说就是全国各地的不同医院报告每个婴儿名称的分娩数量。因此,如果两家医院报告了宝宝名称“Bob”,则数据将具有两个名称Bob的值。我们将首先创建一组随机的宝宝名字。

在[3]中:
#婴儿名字的初始化
names = [ 'Bob' ,'Jessica' ,'Mary' ,'John' ,'Mel' ] 

要使用上述五个随机列表中的1,000个婴儿名称,我们将执行以下操作:

  • 生成0到4之间的随机数

为此,我们将使用函数seedrandintlenrangezip

In [4]:
random.seed?
In [5]:
random.randint?
In [6]:
len?
In [7]:
range?
In [8]:
zip? 

seed(500) - 创建种子

randint(low=0,high=len(names)) - 生成一个介于0和列表“names”长度之间的随机整数.

names[n] - 选择其索引等于n的名称。.

for i in range(n) - 循环直到 i 等于n,即1,2,3,... n。

random_names = 从名称列表中选择一个随机名并执行此操作n次。

In [9]:
random.seed(500)
random_names = [names[random.randint(low=0,high=len(names))] for i in range(1000)] # 输出前10条记录
random_names[:10]
Out[9]:
['Mary',
'Jessica',
'Jessica',
'Bob',
'Jessica',
'Jessica',
'Jessica',
'Mary',
'Mary',
'Mary']
 

生成0到1000之间的随机数字

In [10]:
births = [random.randint(low=0,high=1000) for i in range(1000)]
births[:10]
Out[10]:
[968, 155, 77, 578, 973, 124, 155, 403, 199, 191]
 

使用zip函数合并 names 和 births 数据集。

In [11]:
BabyDataSet = list(zip(random_names,births))
BabyDataSet[:10]
Out[11]:
[('Mary', 968),
('Jessica', 155),
('Jessica', 77),
('Bob', 578),
('Jessica', 973),
('Jessica', 124),
('Jessica', 155),
('Mary', 403),
('Mary', 199),
('Mary', 191)]
 

我们基本上完成了创建数据集。我们现在将使用 pandas  库将此数据集导出到csv文件中

df  是一个  DataFrame  对象。您可以将此对象视为类似于SQL表或Excel电子表格的格式保存了BabyDataSet的内容。下面让我们看看df的内容  。

In [12]:
df = pd.DataFrame(data = BabyDataSet, columns=['Names', 'Births'])
df[:10]
Out[12]:
  Names Births
0 Mary 968
1 Jessica 155
2 Jessica 77
3 Bob 578
4 Jessica 973
5 Jessica 124
6 Jessica 155
7 Mary 403
8 Mary 199
9 Mary 191
 
  • 将这个数据帧导出到  csv  文件。我们可以命名为文件  births1880.txt。函数  to_csv  用于导出文件。除非另有说明,否则该文件将保存在当前目录下。
In [13]:
df.to_csv?
 

我们仅使用的参数是  index  和  header。将这些参数设置为False将会阻止导出索引和标题名称。更改这些参数的值以更好地了解它们的用法。

In [14]:
df.to_csv('births1880.txt',index=False,header=False)
 

获取数据

要读入 txt 文件,我们将使用pandas函数  read_csv。让我们看看这个函数如何使用。

In [15]:
pd.read_csv?
 

虽然这个函数有很多参数,我们这里只简单地传递文本文件的位置。

文件位置在 C:\Users\ENTER_USER_NAME.xy\startups\births1880.txt

Note: 当然,你存放的文件位置不一样,你就需要修改它

In [16]:
Location = r'C:\Users\david\notebooks\update\births1880.txt'
df = pd.read_csv(Location)
 

注意字符串前面的r。由于斜线"\"是特殊转义字符,因此在字符串前加一个  r  将会忽略整个字符串的转义。

In [17]:
df.info()
 
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 999 entries, 0 to 998
Data columns (total 2 columns):
Mary 999 non-null object
968 999 non-null int64
dtypes: int64(1), object(1)
memory usage: 15.7+ KB

信息说:

  • 数据集中有999条记录
  • 有一个名为Mary的列值为999
  • 有一个名为968的列值为999
  • 列中,一列是数字,另一列是非数字 

要真正看到数据帧的内容,我们可以使用head()函数,默认情况下它会返回前五个记录。您还可以传入数字n以返回数据帧的前n个记录。

In [18]:
df.head()
Out[18]:
  Mary 968
0 Jessica 155
1 Jessica 77
2 Bob 578
3 Jessica 973
4 Jessica 124
 

这给我们带来了这个练习的第一个问题。该  read_csv  函数处理的第一个记录在文本文件中为头名。这显然是不正确的,因为文本文件没有为我们提供标题名称。

为了纠正这个问题,我们将传递  header  参数给  read_csv  函数并将它设置为  None  (在python中表示为null)。

In [19]:
df = pd.read_csv(Location, header=None)
df.info()
 
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 2 columns):
0 1000 non-null object
1 1000 non-null int64
dtypes: int64(1), object(1)
memory usage: 15.7+ KB
 

现在让我们看看数据框的最后五条记录

In [20]:
df.tail()
Out[20]:
  0 1
995 John 151
996 Jessica 511
997 John 756
998 Jessica 294
999 John 152
 

.如果我们想给列指定名字,我们必须传递另一个参数names  。我们也可以省略  header 参数。

In [21]:
df = pd.read_csv(Location, names=['Names','Births'])
df.head(5)
Out[21]:
  Names Births
0 Mary 968
1 Jessica 155
2 Jessica 77
3 Bob 578
4 Jessica 973
 

准备数据

 

我们的数据由1880年的婴儿姓名和出生人数组成。我们已经知道我们有1,000条记录,并且没有记录丢失(非空值)。我们可以验证“Names”列仍然只有五个唯一的名称。

我们可以使用数据帧的 unique 属性来查找“Names”列的所有一致记录。

In [23]:
# 方法 1:
df['Names'].unique()
Out[23]:
array(['Mary', 'Jessica', 'Bob', 'John', 'Mel'], dtype=object)
In [24]:
# If you actually want to print the unique values:
for x in df['Names'].unique():
print(x) 
Mary
Jessica
Bob
John
Mel
In [25]:
# 方法 2:
print(df['Names'].describe()) 
count     1000
unique 5
top Bob
freq 206
Name: Names, dtype: object
 

由于每个宝贝名称都有多个值,因此我们需要汇总此数据,让它只会出现一次宝贝名称。这意味着1,000行将需要变为5.我们可以通过使用groupby函数来实现这一点。

In [26]:
df.groupby?
In [27]:
# Create a groupby object
name = df.groupby('Names') # Apply the sum function to the groupby object
df = name.sum()
df
Out[27]:
  Births
Names  
Bob 106817
Jessica 97826
John 90705
Mary 99438
Mel 102319
 

分析数据

要找出最常见的名字或婴儿出生率最高的名字,我们可以执行以下操作之一。

  • 对数据帧排序并选择第一行
  • 使用  max() 属性来查找最大值
In [28]:
# Method 1:
Sorted = df.sort_values(['Births'], ascending=False)
Sorted.head(1)
Out[28]:
  Births
Names  
Bob 106817
In [29]:
# Method 2:
df['Births'].max()
Out[29]:
106817
 
 

呈现数据

在这里,我们可以绘制  Births 列,并标记图形以显示最终用户图上的最高点。与表格一起,最终用户清楚地知道 Bob 是数据集中最受欢迎的婴儿名称。

In [30]:

# Create graph
df['Births'].plot.bar() print("The most popular name")
df.sort_values(by='Births', ascending=False)
 
The most popular name
Out[30]:
  Births
Names  
Bob 106817
Mel 102319
Mary 99438
Jessica 97826
John 90705
 
aaarticlea/png;base64,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%0ANrD77rsD6xmnHyjYnWFs3zB5SEjD5M/eYMZzP8Gw9tVj28fuVbVhtvd4BxANzbheuLmtLtqUNDqG%0AmYbGQ0KSRsUw01aw4164KWk0vM5MktQ8w0yS1DzDTJLUPMNMktQ8w0yS1DzDTJLUPMNMktQ8w0yS%0A1DzDTJLUPMNMktQ8w0yS1DzvzSiNiI/LkYbHMJNGwMflSMNlmEkj4ONypOEyzKSR8nE50jA4AESS%0A1DzDTJLUPMNMktQ8w0yS1DzDTJLUPMNMktQ8w0yS1DzDTJLUPMNMktQ8w0yS1DzDTJLUPMNMktQ8%0Aw0yS1DzDTJLUPMNMktS8oYRZktcm+eckNyS5MckvdMv3THJlklXd8iP71tktyQVJVie5JclxfbUk%0AOTvJrd26p272fad3tdVJzhzGNkiS2jWsh3MuB46qqpuT7AvckuTjwPuB66rqmCSHA5cmWVRVjwCn%0AARur6qAki4CVSa6qqvuAk4CDq+rAJHsAN3S1Lyc5ClgMHApsAlYkWVFVVw5pWyRJjRnWYcZNwB7d%0A9O7AN4Fp4OeAcwGq6vPAXcDR3fsW99XWAFcDx3a144Hzutp9wEXACX215VW1saqmgWV9NUnSDmhY%0AYfZ6er2uNcA/Am8EngXMq6p7+t53O7Cwm17Yzc9YM4SaJGkHNOfDjEl2Bk4HfrqqVnSHEz8JHAZk%0Arp8/V0uWLGFiYgKAyclJJicnR9wiSdKTmZqaYmpqCoDp6eknff8wzpkdBjyvqlZA73BikjuBlwIP%0AJdmrr3e2CFjbTd8O7Avc3Veb6qbXdrWVs6w3U2OW2uMsXbqU+fPnP43NkiSNSn/nY8OGDZxzzjlP%0A+P5hHGa8A3hekoMBkhwI7A/cAlwMnNItPwLYG7imW+8S4O1dbT9659I+0dUuBt6aZKckC+idX7uo%0Ar3ZSNxpyF+Bk4MIhbIckqVFz7plV1T1J3gb8bZJH6AXkqVV1Z5J3A8uTrAIeBE7sRjICfABYluRW%0A4OFunXVdbTlwOLCa3uCSs6rq5u77rklyEXATUMCFVXXFXLdDktSuoQzNr6qLeKzn1L/8HmDWk1RV%0A9W16A0dmq20C3tG9ZqufCXh9mSQJ8A4gkqTtgGEmSWqeYSZJap5hJklqnmEmSWqeYSZJap5hJklq%0AnmEmSWqeYSZJap5hJklqnmEmSWqeYSZJap5hJklqnmEmSWqeYSZJap5hJklqnmEmSWqeYSZJap5h%0AJklqnmEmSWqeYSZJap5hJklqnmEmSWqeYSZJap5hJklqnmEmSWqeYSZJap5hJklqnmEmSWqeYSZJ%0Aap5hJklqnmEmSWreUMIsyUSSs5OsSvIvST7WLd8zyZXd8huTHNm3zm5JLkiyOsktSY7rq6X7vFu7%0AdU/d7PtO72qrk5w5jG2QJLVr3pA+5/3Apqp6IUCSvbrl7wOuq6pjkhwOXJpkUVU9ApwGbKyqg5Is%0AAlYmuaqq7gNOAg6uqgOT7AHc0NW+nOQoYDFwKLAJWJFkRVVdOaRtkSQ1Zs49syTPAE4G3jOzrKru%0A6SaPB87tln0euAs4uqst7qutAa4Gju1b77yudh9wEXBCX215VW2sqmlgWV9NkrQDGsZhxgOAdcB7%0Aklyf5Jokr0qyAJjXF2wAtwMLu+mF3fyMNUOoSZJ2QMM4zDgP2Be4qap+O8lhwKfpHQbMED5/TpYs%0AWcLExAQAk5OTTE5OjrhFkqQnMzU1xdTUFADT09NP+v5hhNla4BHgAoCq+mKSNcBLgIeS7NXXO1vU%0AvR96vat9gbv7alN9n7kvsHKW9WZqzFJ7nKVLlzJ//vynvFGSpNHp73xs2LCBc8455wnfP+fDjFX1%0ALeAfgNcAJNmPXsD8K3AxcEq3/Ahgb+CabtVLgLf3rXM08ImudjHw1iQ7dYcrF9M7bzZTO6kbDbkL%0AvfN1F851OyRJ7RrWaMZTgPOTvJ9eL+1tVfX1JO8GlidZBTwInNiNZAT4ALAsya3Aw8CpVbWuqy0H%0ADgdW0xuxeFZV3QxQVdckuQi4CSjgwqq6YkjbIUlq0FDCrKpuA141y/J7gFlPUlXVt4HXb6G2CXhH%0A95qtfibg9WWSJMA7gEiStgOGmSSpeYaZJKl5hpkkqXmGmSSpeYaZJKl5hpkkqXmGmSSpeYaZJKl5%0AhpkkqXmGmSSpeYaZJKl5hpkkqXmGmSSpeYaZJKl5hpkkqXmGmSSpeYaZJKl5hpkkqXmGmSSpeYaZ%0AJKl5hpkkqXmGmSSpeYaZJKl5hpkkqXmGmSSpeYaZJKl5hpkkqXmGmSSpeYaZJKl5hpkkqXmGmSSp%0AeUMNsyRvTrIpyU9283smuTLJqiQ3Jjmy7727JbkgyeoktyQ5rq+WJGcnubVb99TNvuf0rrY6yZnD%0A3AZJUnvmDeuDkuwLvAW4rm/x+4DrquqYJIcDlyZZVFWPAKcBG6vqoCSLgJVJrqqq+4CTgIOr6sAk%0AewA3dLUvJzkKWAwcCmwCViRZUVVXDmtbJEltGUrPLEmAjwC/Akz3lY4HzgWoqs8DdwFHd7XFfbU1%0AwNXAsX3rndfV7gMuAk7oqy2vqo1VNQ0s66tJknZAwzrM+BvAtVV1w8yCJAuAeVV1T9/7bgcWdtML%0Au/kZa4ZQkyTtgOZ8mDHJi4HjgCOf7L2SJG0NwzhndiSwL7C6O9z4XOAvgN8FHk6yV1/vbBGwtpu+%0AvVvv7r7aVDe9tqutnGW9mRqz1B5nyZIlTExMADA5Ocnk5ORT2zpJ0jY3NTXF1FQvEqanp5/k3UBV%0ADfUFfAb4iW56GXBGN30EcAewczd/BrCsm94P+AawoJt/I/D39A6DLqB3KPHFXe1o4EvAbsAuwPXA%0Aa2dpx3yg1q9fX3O1fv36AgrWF9SYvHptGsb2DYv7aXDuq8G4nwYznvtpePvqse1jftXs2TO00Yz9%0A+Qikm343sDzJKuBB4MTqjWQE+ACwLMmtwMPAqVW1rqstBw4HVtMbsXhWVd0MUFXXJLkIuKn7rgur%0A6oqtsB2SpEYMPcyq6lV90/cAsx7Xq6pvA6/fQm0T8I7uNVv9TMDryyRJgHcAkSRtBwwzSVLzDDNJ%0AUvMMM0lS8wwzSVLzDDNJUvMMM0lS8wwzSVLzDDNJUvMMM0lS8wwzSVLzDDNJUvMMM0lS8wwzSVLz%0ADDNJUvMMM0lS8wwzSVLzDDNJUvMMM0lS8wwzSVLzDDNJUvMMM0lS8wwzSVLzDDNJUvMMM0lS8wwz%0ASVLzDDNJUvMMM0lS8wwzSVLzDDNJUvMMM0lS8wwzSVLzDDNJUvPmHGZJdklyaZJbktyQZCrJAV1t%0AzyRXJlmV5MYkR/att1uSC5Ks7tY9rq+WJGcnubVb99TNvvP0rrY6yZlz3QZJUtuG1TP7cFUdXFUv%0ABz4JfKRb/n7guqp6IXAycEGSnbvaacDGqjoIeA3wZ0n26GonAQdX1YHADwLvSnIIQJKjgMXAocCL%0AgckkxwxpOyRJDZpzmFXVg1X1qb5FnwP27aZ/Dji3e9/ngbuAo7va4r7aGuBq4NiudjxwXle7D7gI%0AOKGvtryqNlbVNLCsryZJ2gFtjXNmvwZ8IskCYF5V3dNXux1Y2E0v7OZnrBlCTZK0A5o3zA9LsgQ4%0AAHgb8IxhfvbTtWTJEiYmJgCYnJxkcnJyxC2SJD2ZqakppqamAJienn7S9w8tzJKcBvw08GNVtRHY%0A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" alt="" />
课程主页      上一课        下一课       

第二课 TXT读取 - 导出 - 选择顶部/底部记录 - 描述性统计 - 分组/排序的更多相关文章

  1. 【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布

    内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做 ...

  2. 【Web探索之旅】第二部分第二课:服务器语言

    内容简介 1.第二部分第二课:服务器语言 2.第二部分第三课预告:框架和内容管理系统 第二部分第二课:服务器语言 介绍了Web的客户端,我们来谈谈Web的服务器端. 既然客户端有客户端的编程语言(HT ...

  3. 【第二课】深入理解Handler

    简要讲解Handler是做什么的 我们知道,在Android中,app启动会启动一个进程一个线程——UI线程,UI线程是主线程,并且不允许这个线程阻塞超过5秒,一旦超过5秒就会ANR. 所以较为耗时的 ...

  4. grails2.3.11第二课

    第二课主要介绍grails相关插件的使用,这是敏捷开发所必需的途径. 可以把grails的插件看作是grails正常项目的迷你型,因为看插件的源码,它的目录结构和正常项目相差无几. 官方开源插件地址 ...

  5. 【Web探索之旅】第三部分第二课:IP地址和域名

    内容简介 1.第三部分第二课:IP地址和域名 2.第三部分第三课预告:协议 第三部分第二课:IP地址和域名 上一课我们说了在Web之中,全球各地有无数台机器,有些充当客户机,有些作为服务器. 那么这些 ...

  6. 【C++探索之旅】第一部分第二课:C++编程的必要软件

    内容简介 1.第一部分第二课:C++编程的必要软件 2.第一部分第三课预告:第一个C++程序 C++编程的必要软件 经过上一课之后,大家是不是摩拳擦掌,准备大干一场了呢. 这一课我们来做一些C++开发 ...

  7. 【Linux探索之旅】第一部分第二课:下载Linux,免费的噢

    内容简介 1.第一部分第二课:下载Linux,免费的噢 2.第一部分第三课预告:测试并安装Ubuntu 下载Linux,免费的噢 大家好,上一课我们认识了非常“霸气侧漏”的Linux操作系统. 也知道 ...

  8. 【C语言探索之旅】 第二课:工欲善其事,必先利其器

    内容简介 1.课程大纲 2.第一部分第二课:工欲善其事,必先利其器 3.第一部分第三课预告:你的第一个程序 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...

  9. Asp.Net Web API 2(CRUD操作)第二课

    Asp.Net Web API 2(CRUD操作)第二课 Asp.Net Web API 导航   Asp.Net Web API第一课:入门http://www.cnblogs.com/aehyok ...

随机推荐

  1. [转载]ext4文件系统的delalloc选项造成单次写延迟增加的分析

    转载http://www.cnblogs.com/cobbliu/p/5603472.html 最近我们的服务进程遇到kill -15后处于Z的状态,变为了僵尸进程,经过/proc/{thread_i ...

  2. 51nod1185 威佐夫游戏 V2【博弈论】

    有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取.拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出2堆石子的数量, ...

  3. springcloud(一):初识springcloud

    研究了一段时间Spring Boot了准备向Spring Cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统 ...

  4. LOJ #2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥)

    很好很有趣很神仙的题! 题目链接: https://loj.ac/problem/2542 题意: 请自行阅读 题解首先我们显然要求的是几个随机变量的最大值的期望(不是期望的最大值),然后这玩意很难求 ...

  5. ASP.NET--IIS的Http请求流程

    下面的文章是基于IIS经典模式给出的流程图,和IIS集成模式有些区别,WIN7系统自带的是IIS7,和文章分写的有些区别,现在基本上都用IIS7了,所以不要入坑 伯乐在线的文章一 伯乐在线的文章二

  6. C#--线程存储数据的机制

    面试题:线程存储数据的机制 Local variables 局部变量 临时存储 栈 Instance class fields 对象存储 堆 (堆的大小只有硬件的限制) Static local va ...

  7. HDU 2912

    直线关于球的多次反射,求最后一次反射点 #include <iostream> #include <cstdio> #include <cstring> #incl ...

  8. C 中 main 函数的參数

          看到不同的人写出的 C 或者 C++ 程序时,可能会出现不一样的 main 函数的定义,以下的几种定义方式都是对的: int main(void) int main(int argc) i ...

  9. find命令用法举例

    显示7天前(后)的时间 for linux “find”的用法: 删除”/tmp”目录下,7天前的文件 find /tmp -name "*" -type f-mtime +7 - ...

  10. ETL (数据仓库技术)

    ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的过程.ETL一词较常用在数 ...