前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据争用教程:大学城数据集

数据争用教程:大学城数据集

作者头像
代码医生工作室
发布2019-08-09 20:04:41
4250
发布2019-08-09 20:04:41
举报
文章被收录于专栏:相约机器人相约机器人

作者 | Benjamin Obi Tayo

来源 | Medium

编辑 | 代码医生团队

数据争用是将数据从原始形式转换为整洁形式以供分析的过程。数据争用是数据预处理中的一个重要步骤,包括数据导入,数据清理,数据结构化,字符串处理,HTML解析,处理日期和时间,处理缺失数据和文本挖掘等几个过程。

数据争论的过程对任何数据科学家来说都是至关重要的一步。在数据科学项目中很容易获得数据以供分析。数据更有可能位于文件,数据库中,或从网页,推文或PDF等文档中提取。了解如何纠缠和清理数据将使您能够从您的数据中获取关键洞察力,否则这些洞察力将被隐藏。

本教程将演示数据争用过程。将学习以下内容:

  1. 输入非结构化数据
  2. 使用字符串处理技术清理和组织非结构化数据
  3. 将非结构化数据转换为结构化数据
  4. 执行结构化数据分析

可以以下存储库下载本文的数据集和代码:

https://github.com/bot13956/unstructured_data_university_towns

项目目标:此代码从非结构化的university_towns.txt数据集返回大学城的DataFrame及其所属的州。最终清理的DataFrame的格式如下:

代码语言:javascript
复制
DataFrame( [ [“Michigan”, “Ann Arbor”], [“Michigan”, “Yipsilanti”] ], columns=[“State”, “RegionName”] )

它显示了特定州的大学城的州和名称。

导入必要的库

代码语言:javascript
复制
import pandas as pd
import numpy as np

导入非结构化,不清洁的数据集

代码语言:javascript
复制
df=pd.read_table("university_towns.txt",header=None)
df.columns=["data"]
df.head(10)

表1:大学城的非结构化,不清洁的数据集及其所属的州。

从表1可以看出,数据集非常非结构化,不清洁,需要大量整理才能进行进一步的分析。

定义一个字典,可以用来将状态映射到它们各自的两个字母的缩写词:

代码语言:javascript
复制
states = {'OH': 'Ohio', 'KY': 'Kentucky', 'AS': 'American Samoa', 'NV': 'Nevada', 'WY': 'Wyoming', 
          'NA': 'National', 'AL': 'Alabama', 'MD': 'Maryland', 'AK': 'Alaska', 'UT': 'Utah', 
          'OR': 'Oregon','MT': 'Montana', 'IL': 'Illinois', 'TN': 'Tennessee', 'DC': 'District of Columbia', 
          'VT': 'Vermont','ID': 'Idaho', 'AR': 'Arkansas', 'ME': 'Maine', 'WA': 'Washington', 'HI': 'Hawaii',
          'WI': 'Wisconsin','MI': 'Michigan', 'IN': 'Indiana', 'NJ': 'New Jersey', 'AZ': 'Arizona', 
          'GU': 'Guam', 'MS': 'Mississippi','PR': 'Puerto Rico', 'NC': 'North Carolina', 'TX': 'Texas', 
          'SD': 'South Dakota', 'MP': 'Northern Mariana Islands','IA': 'Iowa', 'MO': 'Missouri', 'CT': 'Connecticut',
          'WV': 'West Virginia', 'SC': 'South Carolina', 'LA': 'Louisiana',  'KS': 'Kansas', 'NY': 'New York', 
          'NE': 'Nebraska', 'OK': 'Oklahoma', 'FL': 'Florida', 'CA': 'California', 'CO': 'Colorado', 
          'PA': 'Pennsylvania', 'DE': 'Delaware', 'NM': 'New Mexico', 'RI': 'Rhode Island', 'MN': 'Minnesota',
          'VI': 'Virgin Islands','NH': 'New Hampshire', 'MA': 'Massachusetts', 'GA': 'Georgia',
          'ND': 'North Dakota', 'VA': 'Virginia'}

按字母顺序排序

代码语言:javascript
复制
order_states=np.sort(pd.Series(states).values)
order_states;

数据清理,准备和组织

代码语言:javascript
复制
NewState=[]
for i in range(0,len(order_states)):
    for j in range(0,len(df.data)):
        if (order_states[i] +'['+'edit'+']'==df.data[j]):
            NewState=np.append(NewState,order_states[i])
StateRegion=[]
for i in range(0,len(NewState)):
    for j in range(0,len(df.data)):
        if (NewState[i] +'['+'edit'+']'==df.data[j]):
            n = j + 1
    StateRegion=np.append(StateRegion,n)
StateName=[]
CityName=[]
for i in range(0,len(NewState)-1):
    for j in range(0,len(df.data)):
        if (NewState[i] +'['+'edit'+']'==df.data[j]):
            n = j + 1
    while (NewState[i+1] +'['+'edit'+']'!=df.data[n]):
          StateName=np.append(StateName,NewState[i])
          CityName=np.append(CityName,df.data[n])
          n = n + 1
CTYNAME=[]
for i in CityName:
    CTYNAME=np.append(CTYNAME, i.split('(')[0])
city_new=[]
for i in CTYNAME:
    if i[-1]==' ':
        city_new = np.append(city_new,i[:-1])
    else:
        city_new=np.append(city_new,i)

构建清理的数据集

代码语言:javascript
复制
df_final=pd.DataFrame([])
StateName=np.append(StateName,'Wyoming')
city_new=np.append(city_new, 'Laramie')
df_final['State']=StateName
df_final['RegionName']=city_new
df_final.set_index(['State','RegionName'],inplace=True)
df_final.head(20)

表2:显示州及其大学城的清洁和结构化数据集

对比表1至表2中,看到在数据集表2表示清洁和结构化数据集,现在可以用于进一步的分析。

使用Wrangled Dataset进行数据分析

a)堪萨斯州和特拉华州的大学城

代码语言:javascript
复制
df_final.loc['Kansas']

表3:堪萨斯州的大学城

代码语言:javascript
复制
df_final.loc['Delaware']

表4:特拉华州的大学城

b)特定州的大学城镇数量

这可以使用以下代码获得:

代码语言:javascript
复制
df_final.reset_index().groupby('State').count()

表5:每个州的一些大学城的样本输出

总之已经展示了如何使用数据争用将未清理的非结构化数据集转换为可以进行进一步分析的整理形式。数据争论的过程对任何数据科学家来说都是至关重要的一步。了解如何纠缠和清理数据将能够从数据中获取关键洞察力,否则这些洞察力将被隐藏。

可以以下存储库下载本文的数据集和代码:

https://github.com/bot13956/unstructured_data_university_towns

推荐阅读

如何为Tensorflow构建自定义数据集

点击“阅读原文”图书配套资源

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 相约机器人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档