DW动手学数据分析Task1:数据加载及探索性数据分析

news2024/11/24 22:51:42

目录

  • 1 数据载入
    • 1.1 载入数据
    • 1.2 read_csv和read_table的区别
    • 1.3 逐块读取
    • 1.4 修改表头和索引
  • 2 数据初步观察
    • 2.1 查看数据基本信息
    • 2.2 保存数据
  • 3 pandas数据结构和列操作
    • 3.1 Series 和DataFrame
    • 3.2 查看 DataFrame数据每列的名称和值
    • 3.3 DataFrame 的列删除和隐藏
  • 4 数据筛选
    • 4.1 筛选列数据
    • 4.2 筛选特定数据
  • 5 探索性数据分析
    • 5.1 数据排序
    • 5.2 DataFrame数据相加
    • 5.3 查看数据基本信息

  • Datawhale课程链接:链接
  • 参考教材:《Python for Data Analysis》

1 数据载入

1.1 载入数据

  • 相对路径: 相对于当前文件来说,要选择的文件的位置
  • 绝对路径:针对电脑来说,目标文件的位置
    # 绝对位置
    df=pd.read_csv('C:\Users\YG小白\DW数据分析学习\train.csv')# 报错
    # SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes
    
    • 原因:在windows系统当中读取文件路径可以使用\,但是在python字符串中\有转义的含义
    • 方法:在路径前面加r,即保持字符原始值的意思
    df=pd.read_csv(r'C:\Users\YG小白\DW数据分析学习\train.csv')
    

    使用os.getcwd()查看当前工作目录,记住要提前导入OS

1.2 read_csv和read_table的区别

  • read_csv:从文件读取分隔好的数据,默认分隔符是逗号。即是将每个元素作为一列存储
    df1=pd.read_csv('train.csv',nrows = 3)
    print("pd.read_csv读取数据行列数为:",df1.shape)
    # pd.read_table读取数据行列数为: (3, 12)
    
  • read_table:从文件读取分隔好的数据,默认分隔符是制表符(‘\t’),即以行为单位进行分隔。即是将每行所有的元素作为一个维度存储在一起,因此只有一列
    df2 = pd.read_table('train.csv',nrows = 3)#只读取3行数据
    print("pd.read_table读取数据行列数为:",df2.shape)
    # pd.read_table读取数据行列数为: (3, 1)
    
  • 若想用read_table读取出read_csv的效果,设置sep = ','即可
    pandas.read_table(数据文件名, sep=’\t’, header=’infer’)
    
    pandas.read_csv(数据文件名, sep=,, header=’infer’
    

1.3 逐块读取

  • 原理:将数据分成小块按块读入,得到的对象指向了多个分块对象,但并没有将实际数据先读入,而是在提取数据时才将数据提取进来。可减少内存的存储与计算资源
  • chunker(数据块)是什么类型?
    chunker = pd.read_csv('train.csv', chunksize=400) 
    #指定 `chunkersize`参数作为每一块的行数
    print(type(chunker)) # TextParser
    for piece in chunker:
        print(type(piece))
        print(len(piece))
    

在这里插入图片描述

chunkersize参数可以进行逐块加载,本质就是将文本分成若干块,每次处理chunkersize行的数据,最终返回一个TextParser对象,对该对象进行迭代遍历,可以完成逐块统计的合并处理。

1.4 修改表头和索引

  • 方法1:读取时直接处理
    df = pd.read_csv('train.csv', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],
    	index_col='乘客ID',header=0)
    
  • 方法2:用rename函数,用字典的形式替换式的修改,可随意修改个数
    data_df.rename(columns={'PassengerId': '乘客ID', 'Survived': '是否幸存', 'Pclass': '乘客等级(1/2/3等舱位)', 'Name': '乘客姓名', 
                            'Sex': '性别', 'Age': '年龄', 'SibSp': '堂兄弟/妹个数', 'Parch': '父母与小孩个数', 'Ticket': '船票信息', 
                            'Fare': '票价', 'Cabin': '客舱', 'Embarked': '登船港口'},index = '乘客ID', inplace = True)
    
  • 读取后修改列名
    df.columns = ['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口']
    

2 数据初步观察

2.1 查看数据基本信息

  1. 查看数据的基本信息
    df.info()  # 打印摘要
    df.describe()  # 打印描述性统计信息
    
    • info函数:给出样本数据的相关信息概览 :行数,列数,列索引,列非空值个数,列类型,内存占用
    • describe()函数:直接给出样本数据的一些基本的统计量,包括均值,标准差,最大值,最小值,分位数等。
    df.shape  # DataFrame行数和列数
    df.dtypes  # 数据类型
    df.values  # 数组形式
    df.columns # 列标签<Index>
    df.columns.values # 列标签<ndarray>
    df.index  # 行标签<Index>
    df.index.values  # 行标签<ndarray>
    
  2. 观察指定位置的数据
    df.head(n) # 前n行
    df.tail(n) # 后n行
    df.options.display.max_columns=n # 最多显示n列
    df.options.display.max_rows=n  # 最多显示n行
    
  3. 判断数据是否为空
    df.isnull()
    

2.2 保存数据

df.to_csv('train_chinese.csv', encoding = 'utf-8')

若不想存索引,则增加 index = False
不同的操作系统保存下来可能会有乱码。大家可以加入encoding=‘GBK’ 或者encoding = ‘uft-8’


3 pandas数据结构和列操作

3.1 Series 和DataFrame

  • pandas 有两个主要的数据结构:Series 和 DataFrame

    • DataFrame是一种表格型数据,含有一组有序的列,既有行索引也有列索引
    • Series 是一个一维数组对象,只有行索引,由一组数据及其标签组成
    sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
    example_1 = pd.Series(sdata)
    example_1
    

    请添加图片描述

    data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada']
        ,'year': [2000, 2001, 2002, 2001, 2002, 2003]
        ,'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
    example_2 = pd.DataFrame(data)
    example_2
    

    请添加图片描述

3.2 查看 DataFrame数据每列的名称和值

df.columns  # 查看列的名称
df['Cabin']  # 方法1:查看 "Cabin" 列的所有值
df.Cabin  # 方法2:查看 "Cabin" 列的所有值

3.3 DataFrame 的列删除和隐藏

# 列删除
  # 单列删除
del df['a']
  # 多列删除
df.drop(['PassengerId', 'Name', 'Age'], axis = 1, inplace = True)
# 列隐藏
df.drop(['PassengerId', 'Name', 'Age'], axis = 1)
  • drop函数
    • 默认删除行,列需要加axis = 1
    • 如果想要完全删除数据结构,使用inplace=True,默认inplace=False
  • del和drop区别
    • del函数是 Python的内置函数函数,仅对列进行操作,一次只能操作一个,仅是就地操作
    • drop函数是属于pandas中的内置函数,对列和行都进行操作,一次可以处理多个项目,可以就地操作或返回副本

4 数据筛选

4.1 筛选列数据

#【单一条件筛选】
	# 显示年龄在10岁以下的乘客名字
 df[df['Age'] < 10]['Name']
# 【多条件筛选】
	# 在10岁以上和50岁以下的乘客信息显示出来
midage =df[(df['Age'] > 10) & (df['Age'] < 50)]

4.2 筛选特定数据

  • reset_index()函数
    • 作用:数据清洗时,会将带空值的行删除,此时DataFrame或Series类型的数据不再是连续的索引,可以使用reset_index()重置索引。
    • 用法:df.reset_index(drop=True)
    • 获得新的index,原来的index变成数据列,保留下来
    • 不想保留原来的index,使用参数 drop=True,默认 False

    详细链接

    • 如果不使用reset_index()函数,显示的就不是midage数据中的第100行,而是df数据的第100行。
  • loc和iloc函数
    • loc函数:基于行标签进行索引
    • iloc函数:基于行的号进行索引,主要是整数,也可以用布尔数组。
    • 显示midage数据中第100,105,108行的"Pclass","Name"和"Sex"的数据
    # loc函数
    midage.loc[[100,105,108],['Pclass','Name','Sex']]
    # iloc函数
    midage.iloc[[100,105,108],[2,3,4]]
    

5 探索性数据分析

5.1 数据排序

  • 创建DataFrame数据
    frame = pd.DataFrame(np.arange(8).reshape((2, 4)), 
                    index=['2', '1'], 
                    columns=['d', 'a', 'b', 'c'])
    
    请添加图片描述
    • pd.DataFrame() :创建一个DataFrame对象
    • np.arange(8).reshape((2, 4)) : 生成一个二维数组(2*4),第一列:0,1,2,3 第二列:4,5,6,7
    • index=[‘2’, ‘1’]:DataFrame 对象的索引列
    • columns=[‘d’, ‘a’, ‘b’, ‘c’] :DataFrame 对象的索引行
  • 排序
    frame.sort_index()  # 行索引升序
    frame.sort_index(axis = 1)  # 列索引升序
    frame.sort_index(axis = 1, ascending = False)  # 列索引降序
    # 任取一列进行升序排序
    frame.sort_values(by='c', ascending=True)
    # 任选两列数据同时降序排序
    frame.sort_values(by=['a', 'c'], ascending=False)
    	# sort_values这个函数中by参数指向要排列的列
    

5.2 DataFrame数据相加

#建立一个例子
frame1_a = pd.DataFrame(np.arange(9.).reshape(3, 3),
                     columns=['a', 'b', 'c'],
                     index=['one', 'two', 'three'])
frame1_b = pd.DataFrame(np.arange(12.).reshape(4, 3),
                     columns=['a', 'e', 'c'],
                     index=['first', 'one', 'two', 'second'])
 
# 数据相加
new_frame = frame1_a + frame1_b

请添加图片描述

# 数据合并
pd.concat([frame1_a, frame1_b], axis = 0)

在这里插入图片描述

两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN

5.3 查看数据基本信息

new_frame.describe()

#count : 样本数据大小
#mean : 样本数据的平均值
#std : 样本数据的标准差
#min : 样本数据的最小值
#25% : 样本数据25%的时候的值
#50% : 样本数据50%的时候的值
#75% : 样本数据75%的时候的值
#max : 样本数据的最大值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何合并pdf?来看这几个方法!

我们经常在整理文件的时候经常会选择将一些常用文件的格式改为pdf&#xff0c;因为这种文件格式就算发送给了别人&#xff0c;别人也不能随意的修改文件内容&#xff0c;这就保证了我们的文件内容的隐私安全。不过&#xff0c;对于处理pdf文件&#xff0c;我们还是会面临一些不…

c++ dynamic_cast,static_cast,const_cast,reinterpret_cast四种cast用法整理

在C中主要分为四种cast&#xff0c;分别是&#xff1a;static_cast、dynamic_cast、const_cast和reinterpret_cast dynamic_cast动态类型转换 首先&#xff0c;我们明确基类和派生类之间的两个转换术语 向上转换(upcast)&#xff1a;派生类向基类转换 向下站还(downcast)&…

证券服务应用评测系列:海通e海通财发布9.0版本,探索证券APP持续提升用户体验

易观分析&#xff1a;APP作为券商机构线上服务的入口&#xff0c;其活跃用户规模和运营水平在一定程度上能够体现机构战略定位、品牌运营、科技创新、用户竞争等综合实力。易观分析认为&#xff0c;如何围绕用户进行创新&#xff0c;利用技术将壁垒升高&#xff0c;打造具有品牌…

PuTTY installation directory must be on a local hard drive

putty安装问题 问题描述&#xff1a;安装时候报错&#xff0c;installation directory must be on a local hard drive 解决方案&#xff0c;无法解决。 很多人使用了这个方法解决了。但是我解决不了。 1、如果是exe类型的&#xff0c;直接右击以管理员身份运行。 2、如果是…

常用的文件类型大全(建议收藏)

文件格式格式图标格式概况mpg文件mpg是一种常见的视频格式,mpeg标准主要有以下五个,MPEG-1、MPEG-2、MPEG-4、MPEG-7及MPEG-21等。mpg有可能是基于MPEG-1(VCD)或MPEG-2torrent文件torrent文件(扩展名为.torrent)包含了一些BT下载所必须的信息,根据BitTorrent协议,文件发布者…

opencv文字旋转 putText旋转90°

文章目录● opencv文字旋转 putText旋转901. cv::getTextSize获取文字的尺寸textSize2. 设置文字图像textImg尺寸格式3. 将文字绘制在文字图像textImg上4. 对文字图像textImg进行旋转5. 在原图img上设置用来放置文字图像textImg的roi区域5.1 矩形区域roi5.2 行列范围roi6. 将文…

Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation论文解读

Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation 论文&#xff1a;[2105.05537] Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation (arxiv.org) 代码&#xff1a;HuCaoFighting/Swin-Unet: The codes for the work “Swin-Unet:…

LiveNVR监控流媒体Onvif/RTSP功能功能-支持GB35114接入国标流媒体平台接入说明

LiveNVR监控流媒体Onvif/RTSP功能功能-支持GB35114接入国标流媒体平台接入说明1、GB35114注册2、LiveNVR通过GB35114接入LiveGBS2.1、开启LiveGBS 35114功能2.2、 获取设备端证书给平台2.3、LiveGBS白名单中添加需要接入的国密设备2.4、导出LiveGBS平台端证书给设备&#xff08…

管理学实验的设计与实践结课作业

一、不同组织结构类型对组织的沟通效率会带来影响&#xff0c;这也是在组织结构设计过 程需要考虑的重要内容&#xff0c;但对于两者的关系无法准确界定。如在直线职能制的组织结构中&#xff0c;管理幅度和深度是影响是影响沟通效率的主要因素。请设计实验来验证分析直线职能制…

手动部署SQL审计平台Archery(连接mysql8.x)

安装Python和virtualenv从1.9.0版本开始&#xff0c;将不再支持python3.7及以下版本&#xff0c;手动安装也将使用3.9版本作为样例&#xff0c;移除yum安装方式# 安装依赖 yum install libffi-devel wget gcc make zlib-devel openssl openssl-devel ncurses-devel openldap-de…

分享81个PHP源码,总有一款适合您

PHP源码 分享81个PHP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 81个PHP源码下载链接&#xff1a;https://pan.baidu.com/s/18jo0nrQ6tCf-e1PAylItmQ?pwd3rxz 提取码&#xff…

Mysql之多表查询

简单测试 由于我们之前没学过多表查询 我们简单测试一下初学者认为的多表查询 SELECT * FROM emp,dept这是我们的输出结果 其实不难发现 1.返回的结果就是&#xff0c;第一张表一个个数据取出然后和第二张表所有组合 最后返回的是含有两张表的所有列 2.一共返回的记录数第一章…

【ES6篇新语法】(1)ES6介绍及常量声明、对象数组,附实例详解

【写在前面】 应一些粉丝的要求&#xff0c;整理一些ES6相关的文章&#xff0c;因此借这个岁末之际&#xff0c;给大家整理一篇ES6的相关的博客&#xff0c;不管是面试还是在实际的编程上&#xff0c;我们都常提到ES6这个词&#xff0c;可能前几年比较热门&#xff0c;希望大家…

焊接变形的原因以及防止焊接变形的措施

焊接变形的原因   在焊接过程中对焊件进行了局部的、不均匀的加热是产生焊接应力及变形的原因。焊接时焊缝和焊缝附近受热区的金属发生膨胀&#xff0c;由于四周较冷的金属阻止这种膨胀&#xff0c;在焊接区域内就发生压缩应力和塑性收缩变形&#xff0c;产生了不同程度的横向…

喜报!西门子低代码连续四年获评Gartner企业低代码应用平台魔力象限领导者

点击下载最新发布的Gartner魔力象限图™https://www.mendix.com/resources/gartner-magic-quadrant-for-low-code-application-platforms/?utm_mediumpr&utm_campaignMQ&utm_sourceMQ#formWrapper 想象一下&#xff0c;一个为持续数字化转型做好准备的组织会是什么样…

EXTI中断以及系统滴答定时器SysTick的配置和使用

前言 EXTI中断来判断按键按下 EXTI即外部中断/事件控制器&#xff0c;总共支持19个中断/事件请求。每一条中断线都有独立的使能和产生中断后的标志位。 上图可见&#xff0c;中断/时间线0-15&#xff0c;总共16条线分配给了IO&#xff0c;通过设置AFIO的AFIO_EXTICR1、AFIO_…

内核调试之Kdump的原理及配置

术语介绍生产内核&#xff08;production kernel&#xff09;&#xff1a;产品或者线上服务器当前运行的内核。捕获内核&#xff08;capture kernel&#xff09;&#xff1a;系统崩溃时&#xff0c;使用kexec启动的内核&#xff0c;该内核用于捕获生产内核当前内存中的运行状态…

【windows terminal】普通用户免密ssh登录阿里云linux服务器

创建用户 [rootxxx~]# adduser linuxcool创建密钥 使用如下命令创建密钥 [rootxxx~]# ssh-keygen -t rsa创建的密钥路径 Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. 将公钥导入authorized_keys&…

《Go 并发数据结构和算法实践》学习笔记 Day 2

系列文章目录 这是本周期内系列打卡文章的所有文章的目录 《Go 并发数据结构和算法实践》学习笔记 Day 1_jahentao的博客-CSDN博客 文章目录系列文章目录前言一、Skiplist是什么&#xff1f;(What)Skiplist的基本接口查找元素插入元素删除元素二、并行化改造1.并发查找2.并发删…

struts漏洞总结

目录 概述 struts2漏洞 S2-001 漏洞原理 复现 struts2漏洞 S2-005 原理 分析一下003 复现 struts2漏洞s2-007 struts2漏洞 S2-008 原理 复现 struts2漏洞 S2-009 原理 复现 struts2漏洞 S2-012 原理 复现 struts2漏洞 S2-013 原理 复现 struts2漏洞 S2-0…