pandas库基础知识

  • 一、jupyter 代码编辑器
  • 概述:Python 数据分析库介绍
  • 二、pandas 库基础知识
    • (1)常用的Series属性与方法:
    • (2) DataFrame常用方法
    • 1、Series对象
      • 2.1.1、 借助列表来创建 Series 对象的方法,也就是:pd.Series(data)
    • 2、 DataFrame对象
      • 2.1、借助字典来创建 DataFrame 对象的方法,也就是:pd.DataFrame(data)
      • 2.2 通过传入 n 维数组的方式来创建DataFrame 对象的方法
      • 2.3、通过列表的形式创建DataFrame 对象
    • 3、Series 对象和 DataFrame 对象的联系
  • 三、用pandas库读、写文件:
    • 3.1用pandas库读取和写入 Excel 文件
      • 3.1.1、read_excel() 函数读取 Excel 数据
      • 3.1.2、to_excel() 函数将数据写入到 Excel 文件
    • 3.2用pandas库读写csv文件
  • 四、数据的类型转换 astype()
  • 五、数据的批量替换 replace()

一、jupyter 代码编辑器

Cell [sel] 细胞
jupyter 代码编辑器的一个代码单元,一般叫它 Cell。
Cell 是这款 jupyter 代码编辑器的主要构成要素。
代码的输入以及代码结果的输出都是在 Cell 中实现的。
Cell 一共由两个部分组成:In[] 和 Out[],即输入框和输出框。
Cell 在使用时有两个很重要的特点,第一点体现在查看变量的时候,第二点体现在变量值的传递上。查看变量值的时候,只要输入变量名就可以了。
jupyter 代码编辑器第二个特点:当前的 Cell 可以沿用之前 Cell 的运算结果,也就是变量的值是可以传递的。

下面讲解的pandas库知识点中的代码运行示例均是在 jupyter 代码编辑器环境下的示例

概述:Python 数据分析库介绍

二、pandas 库基础知识

pandas [ˈpændəz] 熊猫
pandas 库是一个专门用来解决数据分析问题的库。
pandas 库有以下两大优势:
1)速度快:快速处理大型数据集;
2)效率高:提供大量高效处理数据的函数和方法。
import pandas as pd #导入 pandas 库 简化为 pd
pandas 库提供了两种数据结构:Series 和 DataFrame,来提升操作速度和效率。

(1)常用的Series属性与方法:

s.index #查看索引
s.values #查看数值
s.isnull() #查看为空的,返回布尔型
s.sort_index() #按索引排序
s.sort_values() #按数值排序

(2) DataFrame常用方法

df.head( 5 ) #查看前5行
df.tail( 3 ) #查看后3行
df.values #查看数值
df.index #查看索引
df.shape #查看行数、列数
df.fillna(0) #将空值填充0
df.replace(1, -1) #将1替换成-1
df.isnull() #查找df中出现的空值
df.dropna() #删除空值
df.unique() #查看唯一值
df.reset_index() #修改、删除,原有索引
df.columns #查看df的列名

df.sort_values() #排序

1、Series对象

Series [ˈsɪəriːz] 系列
Series 主要由一组数据及其对应的索引组成。

在上面的例子中,我们还可以在数据的底部看到这样一行信息:dtype: object。
其中,dtype 指的是 pandas 库中的数据类型,object 就等价于之前 python 学过的字符串类型。
dtype 为 object 指的就是,Series 对象中的数据,至少有一条是字符串类型的。
pd.Series() 就是创建 Series 对象的方法。

2.1.1、 借助列表来创建 Series 对象的方法,也就是:pd.Series(data)

 #创建Series对象
surname = pd.Series(['赵', '钱', '孙', '李'])
#查看surname
surname

0 赵
1 钱
2 孙
3 李
dtype: object
在这个案例中,是将一个列表:[‘赵’, ‘钱’, ‘孙’, ‘李’],传给了参数 surname。
当我们将列表传给参数 data 之后,在默认情况下,pd.Series(data) 会自动为列表中的每一个元素分配对应的数字索引。
默认索引是从 0 开始,以 0, 1, 2, 3,… 的形式按序分配给列表中的元素。
Series 对象应用示例,把temp_list1 = [1, 2, 3, 4]
temp_list2 = [5, 6, 2, 3] 2个列表中的元素一一对应相加

1、 用之前学过的列表、循环等知识来解决这个问题

# 创建两个原始列表
temp_list1 = [1, 2, 3, 4]
temp_list2 = [5, 6, 2, 3]
# 创建新列表 temp_list_new
temp_list_new = []
# 将两个原始列表的元素之和添加进 temp_list_new
for i in range(len(temp_list1)):temp_list_new.append(temp_list1[i] + temp_list2[i])
# 查看新列表 temp_list_new
temp_list_new   返回:[6, 8, 5, 7]

2、用 Series 对象中的方法来求这个新列表。

# 创建两个原始列表
temp_list1 = [1, 2, 3, 4]
temp_list2 = [5, 6, 2, 3]
# 创建新的 Series 对象
temp_s = pd.Series(temp_list1) + pd.Series(temp_list2)
# 查看 temp_s
temp_s

终端:


0    6
1    8
2    5
3    7
dtype: int64

2、 DataFrame对象

Data-- [ˈdeɪtə] – 数据 , frame – [freɪm]–框架

2.1、借助字典来创建 DataFrame 对象的方法,也就是:pd.DataFrame(data)

DataFrame对象是一种表格型的数据结构,包含行索引、列索引以及一组数据。
图示:

创建 DataFrame 对象的方法是:pd.DataFrame()
DataFrame 对象的参数可以是字典,示例:

# 创建 DataFrame 对象
new_df = pd.DataFrame({'年龄': [23, 22, 21],'岗位': ['客服', '运营', '公关'],'年购买量': [10, 15, 8]})
# 查看 new_df
new_df

当我们给参数 传入字典的时候,字典的键会变成 DataFrame 对象的列索引,字典的键所对应的值会变成 DataFrame 对象的数据,行索引则默认是 0, 1, 2,…
字典中的键所对应的值的长度必须是一样的

上图中,new_df 中,年龄、岗位以及年购买量这三个键所对应的值长度都为 3,各键所对的值的长度如果不相等,就意味着数据是长短不一的,这样的字典如果传给了参数data,则会报错。字典的各键值长度一定要相等。

2.2 通过传入 n 维数组的方式来创建DataFrame 对象的方法

                    columns-- [ˈkɒləmz] --柱
# 创建DataFrame对象
import numpy as np
class_df2 = pd.DataFrame(np.array([[25, '女'],[18, '女'],[23, '女'],[18, '男']]),columns = ['年龄', '性别'],index = [1, 2, 3, 4])
# 查看 class_df2
class_df2
#终端:年龄 性别
1   25  女
2   18  女
3   23  女
4   18  男

2.3、通过列表的形式创建DataFrame 对象

以嵌套列表作为数据传入时,列表的元素会作为 DataFrame 对象的行数据显示,且会为数据默认生成从 0 开始的列名,也可以借助 DataFrame() 类的参数 columns 来设置列名。例:

In [ 8 ]
1 # 设置列表
2 students_info = [['小蓝', '语文', '79'],
3['小邱', '数学', '83'],
4['小李', '英语', '92']]
5
​
6
# 使用列表创建 DataFrame 对象,同时设置列名。
7 students_df = pd.DataFrame(students_info, columns=['姓名', '科目', '分数'])
8 students_df


对于已创建好的 DataFrame 对象,也可以修改列名,如:
students_df.columns = [ ‘分数’,‘姓名’, ‘科目’]

3、Series 对象和 DataFrame 对象的联系

DataFrame 对象可以被看作是由 Series 对象所组成的。

# 提取'年龄'这一列数据
class_df['年龄']
----------------------
0    25
1    18
2    23
3    18
Name: 年龄, dtype: int64
#通过 DataFrame['列索引'] 这个方法提取出来的数据,是一个 Series 对象!
# 查看'年龄'这一列数据的类型
type(class_df['年龄'])
---------------------
终端:pandas.core.series.Series

果然,提取出来的年龄这一列数据是一个 Series 对象!
同理,提取其它列的数据也会返回 Series 对象。
思维导图

三、用pandas库读、写文件:

3.1用pandas库读取和写入 Excel 文件

3.1.1、read_excel() 函数读取 Excel 数据

read_excel() 函数,它可以以 DataFrame 格式读取 Excel 文件的数据,并返回一个 DataFrame 对象

1)参数 io 传入的是 Excel 文件路径或文件对象。例如 ‘test.xlsx’;
2)参数 sheet_name 传入的是 Excel 文件的工作表名称,默认为第一个工作表 ‘Sheet1’。
例:

import pandas as pd
# 打开【成绩单.xlsx】工作簿,并获取【1 班】工作表的数据
data_1 = pd.read_excel('./工作/成绩单.xlsx', sheet_name='1 班')
data_1

3.1.2、to_excel() 函数将数据写入到 Excel 文件

to_excel() 函数可以以 DataFrame 格式将数据写入到 Excel 文件。

1)参数 excel_writer 同样传入的是 Excel 文件路径或文件对象;
2)参数 sheet_name 有些不同,传入的是新建 Excel 文件的工作表名称,默认为新建工作表 ‘Sheet1’;
3)参数 index 用于决定是否在写入时加上数据的行索引,默认为 True,即往文件中写入行索引。设置为 False 则不写入行索引。

代码示例:
如果想要创建一个工作表名为【2 班】的工作簿【新成绩单.xlsx】,并将创建的 DataFrame 数据写入到该工作表

1 # 创建一个 DataFrame 对象的数据
2  data_2 = pd.DataFrame({'学号':[1, 2, 3], '性别':['男', '男', '女'], '年龄':['17', '17', '16'], '总分':['285', '273', '240']})
3 # 将数据写入到【新成绩单.xlsx】工作簿中的【2 班】工作表
4 data_2.to_excel('新成绩单.xlsx', sheet_name='2 班', index=False)

上方代码中,将 to_excel() 函数的参数 index 设置为 False,目的是不把行索引也写入到工作簿中。因为 Excel 表中默认有行索引。如果数据的行索引在工作簿中不具备参考价值,建议不写入到工作簿中。

3.2用pandas库读写csv文件

pandas 库为读取各种文件类型的数据提供了非常简便高效的方法。
pd.read_csv(path, encoding) 就是其中一种高效读取 csv 文件的方法,返回的是一个 DataFrame 对象。
这个方法有很多参数,这里先介绍两种最常用的:path,encoding

对于参数 path,需要传一个文件路径给它。可以是相对路径,也可以是绝对路径。
对于参数 encoding,需要传一个文件编码格式给它。文件编码格式的选取需要根据所读文件的编码格式来定。

代码示例–导入或读取文件:

# 导入 csv 数据
my_data = pd.read_csv('./工作/mask_data.csv', encoding = 'utf-8')

查看数据----只需要输入变量名就可以查看变量的值了:

# 查看 my_data
my_data

查相结果示例:

从底部的数据中可以发现,总行数是 101942,总列数是 6

写入函数为:to_csv() 方法与to_excel() 类似

四、数据的类型转换 astype()

                   type---[taɪp]---类型;种类

假如有一个 DataFrame 对象的数据是这样的:
英语分数为字符串类型

In [ 9 ]
1 # 创建一个 DataFrame 对象的数据
2 data_5 = pd.DataFrame({'姓名':['林某某', '许放羊', '王鱼'], '语文': [87, 82, 67], '数学':[73, 85, 90], '英语':['89', '95', '95']})
3 data_5
运行
Out [ 9 ]姓名 语文  数学  英语
0   林某某 87        73     89
1   许放羊 82        85     95
2   王鱼  67        90     95

如果想要新建一个【总分】列,用来存储每个人三门科目的总分。

data_5[‘总分’] = data_5[‘语文’] + data_5[‘数学’] + data_5[‘英语’]
运行后程序会报错,因为【英语】列的数据为字符串类型,与其它两列的数据类型不一致。这就要求我们调整【英语】列的数据类型,使得三列的数据类型都为整数或者浮点型,才能进行求和操作。
astype() 方法中的参数 dtype, 我们可以为其赋上需要的数据类型,如 int、str 等。

由于参数 dtype 是 astype() 方法的第一个位置参数,所以我们在使用时无需写为 astype(dtype=int),可以直接写为 astype(int)。
已知【英语】列的数据类型为字符串类型,其它两列的数据类型为整数型。那只需要将【英语】列的数据类型转换为整数型。
代码示例:

In [ 11 ]
1 # 计算每个人三门科目的总分
2 data_5['总分'] = data_5['语文'] + data_5['数学'] + data_5['英语'].astype(int)
3 data_5
运行
Out [ 11 ]姓名    语文  数学  英语  总分
0   林某某 87        73    89     249
1   许放羊 82        85    95     262
2   王鱼  67        90    95     252

五、数据的批量替换 replace()

              replace--- [rɪˈpleɪs] ---代替

有时我们读取数据时,会发现数据里存在一些错误信息。如下图中的“山头市”:

为了确保数据的准确性,我们需要对这些错别字进行批量修改,替换为正确的内容。

例:

In [ 15 ]
1 # 创建一个 DataFrame 对象的数据
2 data_7 = pd.DataFrame({'性别':['难', '女', '难', '女', '女'],
3'城市':['.', '潮州市', '山头市', '汕尾市', '山头市'],
4'年龄':[25, 26, 24, 25, 26],
5   '爱好':['蓝球', '跑步', '跳舞', '逛街', '读书']})
6  data_7
运行
Out [ 15 ]性别    城市  年龄  爱好
0   难   .       25     蓝球
1   女   潮州市 26     跑步
2   难   山头市 24     跳舞
3   女   汕尾市 25     逛街
4   女   山头市 26     读书

将上方数据中【城市】列的值“山头市”,以及【爱好】列的值“蓝球”,分别替换为“汕头市”、“篮球”。
先设置一个字典 fix_typo = {‘山头市’:‘汕头市’, ‘蓝球’:‘篮球’},再将该字典放入 replace() 方法里,具体实现代码如下:

In [ 62 ]
1 # 定义字典 fix_typo
2 fix_typo = {'山头市':'汕头市', '蓝球':'篮球'}
3 # 对【城市】、【爱好】列的错字进行修改
4 data_7 = data_7.replace(fix_typo)
5 data_7
运行
Out [ 62 ]性别    城市  年龄  爱好
0   男       未知  25      篮球
1   女       潮州市 26      跑步
2   男       汕头市 24      跳舞
3   女       汕尾市 25      逛街
4   女       汕头市 26      读书

上方的代码会根据 replace() 内的参数内容,对整个 DataFrame 对象的数据进行批量替换。
如果只想对指定某一列的数据进行替换,比如只替换【城市】列的数据,代码如下:

In [ 18 ]
1 # 定义字典 fix_typo
2 fix_typo = {'山头市':'汕头市', '蓝球':'篮球'}
3 # 对【城市】列的错字进行修改
4 data_7['城市'] = data_7['城市'].replace(fix_typo)
5 data_7
运行
Out [ 18 ]性别    城市  年龄  爱好
0   难         . 25          蓝球
1   女      潮州市  26      跑步
2   难      汕头市  24      跳舞
3   女      汕尾市  25      逛街
4   女      汕头市  26      读书

从运行结果可以看到,【爱好】列的“蓝球”没有被修改为“篮球”,原因是我们只指定【城市】列,所以其它列的数据不会被替换。

小结:

数据分析一、 pandas库基础知识相关推荐

  1. Python 数据分析与展示笔记4 -- Pandas 库基础

    Python 数据分析与展示笔记4 – Pandas 库基础 Python 数据分析与展示系列笔记是笔者学习.实践Python 数据分析与展示的相关笔记 课程链接: Python 数据分析与展示 参考 ...

  2. pandas库基础学习

    pandas库基础学习 1.Pandas模块的数据结构 Pandas模块的数据结构主要有两种: Series DataFrame Series 是一维数组,基于Numpy的ndarray 结构 Dat ...

  3. Python数据分析之Pandas库

    Python数据分析之Pandas库 一.Pandas简介 二.Pandas库的安装 三.Pandas的数据结构 四.Series 和 DataFrame 数据结构的使用 五.其他可以参考的网站 一. ...

  4. 艺赛旗(RPA) Pandas 类库基础知识

    艺赛旗 RPA8.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=line1 详细内容请参看艺赛旗官网支持栏目:RPA社区 点击链接 ...

  5. Python系列 之 matplotlib库 基础知识

    Python系列 之 matplotlib库 基础知识学习 Pyplot 简单示例 中文显示问题 注册全局字体 font_manager.FontProperties注册字体 Figure Figur ...

  6. 【入门】数据分析必备——统计学入门基础知识

    ↑↑↑关注后"星标"简说Python 人人都可以简单入门Python.爬虫.数据分析 简说Python推荐来源:木木自由 作者:小陌One old watch, like brie ...

  7. Turtle库与Time库基础知识分享(详细)

    Turtle库与Time库基础知识分享(详细) 认识turtle库: turtle库是turtle绘图体系的Python实现,是标准库之一 标准库:随解释器操作系统中的模块直接安装到解释器中的并且可以 ...

  8. 计算机操作员 国家题库,计算机操作员中最新国家题库基础知识部分.doc

    计算机操作员中最新国家题库基础知识部分 第1章 信息技术原理概述PAGE PAGE 22国家职业资格培训教程配套辅导练习第一章 信息技术原理概述计算机的概念.分类及应用1.信息革命的概念 迄今为止,人 ...

  9. 数据分析必备——SQL入门基础知识

    数据说·梦想季 一直很喜欢一句话:山鸟与鱼不同路,从此山水不相逢.意思就是如果你现在不够优秀,即使遇见了,也不配拥有-...努力是唯一的方向! // 导读:科学技术的快速发展正在改变我们的社会,也在不 ...

最新文章

  1. 学习webpack记录(三)
  2. Clonezilla制作镜像时报错:extfsclone.c:bitmap free count err解决办法
  3. java打印 a b c,创建一个java程序,按顺序给出3个术语作为输入(a,b,c)打印它们的根...
  4. PMCAFF高端俱乐部首次集结,最顶级产品人的私密俱乐部!
  5. 002 python准备做题的一些准备
  6. [蓝桥杯][2013年第四届真题]核桃的数量-枚举(水题)
  7. 解开Future的神秘面纱之任务执行
  8. 2018安卓应用安全白皮书:超98%安卓应用存有安全风险
  9. 陈国良院士将出席“首届对象存储技术与应用大会”
  10. 非常好用的php单文件在线文件管理器微网盘系统 万维景盛优化版
  11. SPSS调节效应分析插件 v1.1.1
  12. 【PM】产品需求文档PRD的一般格式
  13. matlab 投影法,梯度投影法 MATLAB程序可执行
  14. win7系统下,手机投屏到电脑
  15. 服务器局域网无法访问共享文件夹,科学网—局域网共享文件夹不能访问 - 陈芳林的博文...
  16. 计算机文字录入培训大纲,计算机文字录入处理员教学大纲.doc
  17. Qt报错:cc1plus.exe: out of memory allocating 65536 bytes
  18. Firefly-rk3288 开发板Linux系统编译
  19. 推荐一个好用的PDF阅读器
  20. layui tree支持搜索

热门文章

  1. redis 存储数组和对象
  2. #乐观是最好的算法?
  3. 如何理性地看待减半行情
  4. 好程序员大前端送干货Web前端开发框架汇总
  5. 上海边检部门全力护航浦东机场货运渠道
  6. windows c++ 修改用户的文件夹操作权限
  7. Acwing语法基础课第八次课(2)756. 蛇形矩阵748. 数组的右下半部分754. 平方矩阵 II752. 数组的右方区域 746. 数组的左下半部分750. 数组的下方区域
  8. c4d的语言是方框,怎么用C4D制作爆炸小方块
  9. 台式电脑无法自动修复此计算机怎么办,电脑无法自动修复此计算机咋办
  10. VS 2017 众多重构插件