Coursera数据清洗项目:run_analysis.R脚本操作指南

需积分: 5 0 下载量 99 浏览量 更新于2024-11-15 收藏 107KB ZIP 举报
资源摘要信息:"Getting_Cleaning_Data_Project:GCD Week3 项目提交" 标题和描述中提到的知识点主要涉及数据清洗和数据整理的项目。在Coursera平台上的这个项目要求学生编写一个R脚本,名为run_analysis.R,用于对某个原始数据集进行处理,并生成一个整洁的数据集,命名为TidyData.txt。这个过程主要是在R语言的环境下实现的,因此对于初学者来说,它是一个很好的实践机会来加深对R语言和数据处理的理解。 以下为该知识点的详细说明: 1. 项目概述:Getting_Cleaning_Data_Project是Coursera上一个特定的课程项目,该项目的一个重要环节是创建一个名为run_analysis.R的脚本,该脚本的主要目的是将原始数据集转换为一个整洁的数据集TidyData.txt。整洁的数据集(Tidy Data)是一种数据整理的标准格式,每列是一个变量,每行是一个观测值,每个表格是一个类型的数据集。 2. 先决条件: - R软件安装:必须在计算机上安装R软件,且版本要达到3.1.3或更高版本,以确保可以运行脚本和各种数据操作包。 - 安装R包:需要安装的R包包括dplyr、reshape和reshape2。这些包通常用于数据的筛选、排序、聚合、变形等操作。 - 数据集下载和解压缩:需要下载特定的数据集,并将其解压缩至R的工作目录下,以便run_analysis.R脚本可以访问和操作这些数据。 3. 关于run_analysis.R脚本: - 功能描述:run_analysis.R脚本负责读取原始数据集,执行数据清洗和转换的操作,最后输出一个转换后的整洁数据集。 - 运行环境:该脚本应当在R工作目录中执行,也就是存放原始数据和脚本的目录。 - 操作内容:脚本的具体操作可能包括但不限于数据的导入、数据清洗(如去除重复观测值、处理缺失值等)、变量的重命名、数据子集的选择、数据的汇总与合并等。 4. 项目提交和验收标准: - 提交格式:学生需要将run_analysis.R脚本和生成的TidyData.txt文件作为项目成果提交。 - 项目验收:项目是否符合要求需要依据上传的自述文件(README.md)和CodeBook文件的说明。README.md通常会介绍脚本如何运行和数据集的结构,CodeBook则会解释每个变量的含义。 5. R语言知识: - R语言基础:R语言是一种专门用于统计分析和图形表示的编程语言,广泛应用于数据挖掘、生物信息学、金融分析等领域。 - 数据处理:在R中进行数据处理涉及向量、矩阵、数据框(DataFrame)等数据结构的操作,以及各种数据操作函数的使用。 - Tidyverse:dplyr是R中一个非常流行的包,它是tidyverse的一部分,旨在提供一套一致的数据处理工具,使数据操作变得简洁而富有表现力。 - 数据变形:reshape和reshape2包用于数据的变形,包括将数据从宽格式转换为长格式,或者反过来,这对于统计分析尤为重要。 掌握run_analysis.R脚本编写与执行,以及对R语言在数据清洗和整理方面的应用,是完成此项目的关键。对于希望提升自己数据分析和处理能力的学员来说,这个项目不仅提供了实践经验,还涉及了数据处理理论的实际应用。
2023-05-27 上传

#!/usr/bin/env python #coding: utf-8 import os from time import time from datetime import datetime from netmiko import ConnectHandler from openpyxl import Workbook from openpyxl import load_workbook def read_device_excel( ): ip_list = [] wb1 = load_workbook('E:\/Users/Wayne_Peng/Desktop/cs_lab.xlsx') ws1 = wb1.get_sheet_by_name("Sheet1") for cow_num in range(2,ws1.max_row+1): ipaddr = ws1["a"+str(cow_num)].value ip_list.append(ipaddr) return ip_list def get_config(ipaddr): session = ConnectHandler(device_type="huawei", ip=ipaddr, username="mtlops", password="cisco,123", banner_timeout=300) print("connecting to "+ ipaddr) print ("---- Getting HUAWEI configuration from {}-----------".format(ipaddr)) # config_data = session.send_command('screen-length 0 temporary') # config_data = session.send_command('dis cu | no-more ') # command = 'display version | display cpu-usage | display memory-usage' # config_data = session.send_command(command) commands = ['display version', 'display cpu-usage', 'display memory-usage'] config_data = '' for cmd in commands: output = session.send_command_timing(cmd) config_data += f'{cmd}\n{output}\n' session.disconnect() return config_data def write_config_to_file(config_data,ipaddr): now = datetime.now() date= "%s-%s-%s"%(now.year,now.month,now.day) time_now = "%s-%s"%(now.hour,now.minute) #---- Write out configuration information to file config_path = 'E:\/Users/Wayne_Peng/Desktop/' +date verify_path = os.path.exists(config_path) if not verify_path: os.makedirs(config_path) config_filename = config_path+"/"+'config_' + ipaddr +"_"+date+"_" + time_now # Important - create unique configuration file name print ('---- Writing configuration: ', config_filename) with open( config_filename, "w",encoding='utf-8' ) as config_out: config_out.write( config_data ) return def main(): starting_time = time() ip_list = read_device_excel() for ipaddr in ip_list: hwconfig = get_config(ipaddr) write_config_to_file(hwconfig,ipaddr) print ('\n---- End get config threading, elapsed time=', time() - starting_time) #======================================== # Get config of HUAWEI #======================================== if __name__ == '__main__': main() 加一段gevent,def run_gevent()

2023-05-26 上传

class ConstrainedList (list): """Constrains the list class so it offers only the following primitive array API: - `lst[i]` for getting and setting a value at an *existing, positive* index `i` - `len(lst)` to obtain the number of slots - `lst.append(None)` to grow the list by *one slot at a time* - `del lst[len(lst)-1]` to delete the last slot in a list All other operations will result in an exception being raised. """ def __init__(self, *args): super().__init__(*args) def append(self, value): if value is not None: raise ValueError('Can only append None to constrained list!') super().append(value) def __getitem__(self, idx): if idx < 0 or idx >= len(self): raise ValueError('Can only use positive, valid indexes on constrained lists!') return super().__getitem__(idx) def __setitem__(self, idx, value): if idx < 0 or idx >= len(self): raise ValueError('Can only use positive, valid indexes on constrained lists!') super().__setitem__(idx, value) def __delitem__(self, idx): if idx != len(self)-1: raise ValueError('Can only delete last item in constrained list!') super().__delitem__(idx) def __getattribute__(self, name): if name in ('insert', 'pop', 'remove', 'min', 'max', 'index', 'count', 'clear', 'copy', 'extend'): raise AttributeError('Method "' + name + '" not supported on constrained list!') else: return super().__getattribute__(name) # __getattribute__ isn't called for special methods, so the following are needed def __add__(self, value): raise AttributeError('Constrained lists do not support `+`!') def __contains__(self, value): raise AttributeError('Constrained lists do not support `in`!') def __eq__(self, value): raise AttributeError('Constrained lists do not support `==`!') def __iter__(self): raise AttributeError('Constrained lists do not support iteration!') def __str__(self): raise AttributeError('Constrained lists do not support stringification!') def __repr__(self): raise AttributeError('Constrained lists do not support stringification!') # for testing only! (don't use this in your ArrayList implementation) def _as_list(self): return list(super().__iter__())

2023-02-12 上传