IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 第4章:pandas模块入门 -> 正文阅读

[人工智能]第4章:pandas模块入门

第4章 pandas模块入门

4.1 数据结构

pandas有两个重要的数据结构对象:Series和DataFrame。

4.1.1 Series对象

Series是创建一个一维数组对象,会自动生成行标签。

import pandas as pd
s = pd.Series(['短裤', '毛衣', '连衣裙', '牛仔裤'])
print(s)
0     短裤
1     毛衣
2    连衣裙
3    牛仔裤
dtype: object

index参数可以指定行标签

import pandas as pd
s1 = pd.Series(['短裤', '毛衣', '连衣裙', '牛仔裤'], index = ['a001', 'a002', 'a003', 'a004'])
print(s1)
a001     短裤
a002     毛衣
a003    连衣裙
a004    牛仔裤
dtype: object

使用Series对象还可以基于字典创建数据

import pandas as pd
s2 = pd.Series({'a001':'短裤', 'a002':'毛衣', 'a003':'连衣裙', 'a004':'牛仔裤'})
print(s2)
a001     短裤
a002     毛衣
a003    连衣裙
a004    牛仔裤
dtype: object

4.1.2 DataFrame对象

会自动生成行列标签

import pandas as pd
df = pd.DataFrame([['短裤', 45], ['毛衣', 69], ['连衣裙', 119], ['牛仔裤', 99]])
print(df)
     0    1
0   短裤   45
1   毛衣   69
2  连衣裙  119
3  牛仔裤   99

可以columns参数指定列标签;index参数指定行标签

import pandas as pd
df1 = pd.DataFrame([['短裤', 45], ['毛衣', 69], ['连衣裙', 119], ['牛仔裤', 99]], 
                   columns=['产品', '单价'], index=['a001', 'a002', 'a003', 'a004'])
print(df1)
       产品   单价
a001   短裤   45
a002   毛衣   69
a003  连衣裙  119
a004  牛仔裤   99

也可以用字典形式生成数据

import pandas as pd
df3 = pd.DataFrame({'产品':['短裤', '毛衣', '连衣裙', '牛仔裤'],'单价':[45, 69, 119, 99]})
print(df3)
    产品   单价
0   短裤   45
1   毛衣   69
2  连衣裙  119
3  牛仔裤   99

在用字典生成数据的基础上,同时指定行标签

import pandas as pd
df3 = pd.DataFrame({'产品':['短裤', '毛衣', '连衣裙', '牛仔裤'],'单价':[45, 69, 119, 99]}, index = ['a001', 'a002', 'a003', 'a004'])
print(df3)
       产品   单价
a001   短裤   45
a002   毛衣   69
a003  连衣裙  119
a004  牛仔裤   99

4.2 读取数据

4.2.1 读取Excel数据:read_excel()函数

1. 读取特定工作簿:sheet_name参数

例如对下表的数据进行读取

image-20211114191142589

4月是第四个表,我们应把sheet_name参数指定为3;因为索引是从0开始的。

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data)
   订单编号   产品  数量    金额
0  d001  投影仪  52000
1  d002  马克笔  5300
2  d003  打印机  1298
3  d004  点钞机  1349
4  d005  复印纸  2100
5  d006  条码纸  634

可以看出read_excel()函数自动创建了一个DataFrame对象,同时自动把第一行数据当做列标签。

2. 指定列标签:header参数

header参数可以指定列标签

可以看出不给出header参数时,该参数默认为0。

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, header=0)
print(data)
   订单编号   产品  数量    金额
0  d001  投影仪  52000
1  d002  马克笔  5300
2  d003  打印机  1298
3  d004  点钞机  1349
4  d005  复印纸  2100
5  d006  条码纸  634

header=1时结果如下:

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, header=1)
print(data)
   d001  投影仪  52000
0  d002  马克笔  5300
1  d003  打印机  1298
2  d004  点钞机  1349
3  d005  复印纸  2100
4  d006  条码纸  634

header=None时结果如下:

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name = 3, header = None)
print(data)
      0    1   2     3
0  订单编号   产品  数量    金额
1  d001  投影仪  52000
2  d002  马克笔  5300
3  d003  打印机  1298
4  d004  点钞机  1349
5  d005  复印纸  2100
6  d006  条码纸  634
3. 指定行标签:index_col参数

该参数默认为None

index_col=0时,第0列为列标签

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data)
       产品  数量    金额
订单编号               
d001  投影仪  52000
d002  马克笔  5300
d003  打印机  1298
d004  点钞机  1349
d005  复印纸  2100
d006  条码纸  634

index_col=0时

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=1)
print(data)
     订单编号  数量    金额
产品                 
投影仪  d001  52000
马克笔  d002  5300
打印机  d003  1298
点钞机  d004  1349
复印纸  d005  2100
条码纸  d006  634
4. 读取指定列:usecols参数

usecols=[2]:指定第二列

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, usecols=[2])
print(data)
   数量
0  51  52  13  14  25  6

指定多列

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, usecols=[1, 3])
print(data)
    产品    金额
0  投影仪  2000
1  马克笔   300
2  打印机   298
3  点钞机   349
4  复印纸   100
5  条码纸    34

4.2.2 读取csv文件数据:read_csv()函数

数据如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j642fEC0-1636891425493)(C:\Users\14051\AppData\Roaming\Typora\typora-user-images\image-20211114192949607.png)]

import pandas as pd
data = pd.read_csv('订单表.csv')
print(data)
   订单编号   产品  数量    金额
0  d001  投影仪  52000
1  d002  马克笔  5300
2  d003  打印机  1298
3  d004  点钞机  1349
4  d005  复印纸  2100
5  d006  条码纸  634

nrows参数可以指定显示的行数

nrows=3时

import pandas as pd
data = pd.read_csv('订单表.csv', nrows=3)
print(data)
   订单编号   产品  数量    金额
0  d001  投影仪  52000
1  d002  马克笔  5300
2  d003  打印机  1298

4.3 查看数据的行数和列数

4.3.1 查看数据的前几行:head()函数

head()函数中参数为空默认前5行

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data.head())
   订单编号   产品  数量    金额
0  d001  投影仪  52000
1  d002  马克笔  5300
2  d003  打印机  1298
3  d004  点钞机  1349
4  d005  复印纸  2100

指定head(3)时如下

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data.head(3))
   订单编号   产品  数量    金额
0  d001  投影仪  52000
1  d002  马克笔  5300
2  d003  打印机  1298

4.3.2 查看数据的行数和列数:shape属性

numpy模块也是shape

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data)
print(data.shape)
   订单编号   产品  数量    金额
0  d001  投影仪  52000
1  d002  马克笔  5300
2  d003  打印机  1298
3  d004  点钞机  1349
4  d005  复印纸  2100
5  d006  条码纸  634
(6, 4)

4.3.3 查看数据的类型

1. info()函数
import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name = 3)
print(data.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   订单编号    6 non-null      object
 1   产品      6 non-null      object
 2   数量      6 non-null      object
 3   金额      6 non-null      int64 
dtypes: int64(1), object(3)
memory usage: 320.0+ bytes
None
2. dtype参数

查看特定列的书库类型

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name = 3)
print(data['金额'].dtype)
int64
3. astype()函数

特定列数据类型转换

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name = 3)
data['金额'] = data['金额'].astype('float64')
print(data)
print(data['金额'].dtype)
   订单编号   产品  数量      金额
0  d001  投影仪  52000.0
1  d002  马克笔  5300.0
2  d003  打印机  1298.0
3  d004  点钞机  1349.0
4  d005  复印纸  2100.0
5  d006  条码纸  634.0
float64

4.4 选择数据

4.4.1 选择行数据:loc()、iloc()函数

先查看一下所有数据

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)  #index_col指定行标签
print(data)
       产品  数量    金额
订单编号               
d001  投影仪  52000
d002  马克笔  5300
d003  打印机  1298
d004  点钞机  1349
d005  复印纸  2100
d006  条码纸  634
1. 挑选单行数据

loc()函数加行标签指定行

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data.loc['d001'])
产品     投影仪
数量      5台
金额    2000
Name: d001, dtype: object

iloc()函数加索引指定行号

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data.iloc[2])
产品    打印机
数量     1台
金额    298
Name: d003, dtype: object
2. 挑选多行数据

与单行相比,结果显示的格式不一样了

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data.loc[['d002', 'd004']])
       产品  数量   金额
订单编号              
d002  马克笔  5300
d004  点钞机  1349

iloc()挑选:

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data.iloc[[1, 5]])
       产品  数量   金额
订单编号              
d002  马克笔  5300
d006  条码纸  634
       产品  数量   金额

或者给出区间

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data.iloc[1:5])
       产品  数量   金额
订单编号              
d002  马克笔  5300
d003  打印机  1298
d004  点钞机  1349
d005  复印纸  2100
3. 挑选满足条件的行
import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
a = data['金额'] < 300   #挑选金额>300的行
print(data[a])
       产品  数量   金额
订单编号              
d003  打印机  1298
d005  复印纸  2100
d006  条码纸  634

4.4.2 选择列数据:iloc()函数

1. 挑选单列数据
import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data['产品'])
0    投影仪
1    马克笔
2    打印机
3    点钞机
4    复印纸
5    条码纸
Name: 产品, dtype: object
2. 挑选多列数据

挑选数据要么标签,要么索引挑选

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data[['产品', '金额']])
    产品    金额
0  投影仪  2000
1  马克笔   300
2  打印机   298
3  点钞机   349
4  复印纸   100
5  条码纸    34

或者

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data.iloc[:, [1,3]])
    产品    金额
0  投影仪  2000
1  马克笔   300
2  打印机   298
3  点钞机   349
4  复印纸   100
5  条码纸    34

或者写成区间

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data.iloc[:, 1:3])
    产品  数量
0  投影仪  51  马克笔  52  打印机  13  点钞机  14  复印纸  25  条码纸  6

4.4.3 同时选择行列数据

标签挑选

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
data1 = data.loc[['d001', 'd005'], ['产品', '金额']]
print(data1)
       产品    金额
订单编号           
d001  投影仪  2000
d005  复印纸   100

或者索引挑选

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
data2 = data.iloc[[2, 4], [0, 2]]
print(data2)
       产品   金额
订单编号          
d003  打印机  298
d005  复印纸  100

4.5 修改行标签和列标签:columns、index参数;set_index()函数

先查看一下数据

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data)
   订单编号   产品  数量    金额
0  d001  投影仪  52000
1  d002  马克笔  5300
2  d003  打印机  1298
3  d004  点钞机  1349
4  d005  复印纸  2100
5  d006  条码纸  634

set_index()设置行标签

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data.set_index('订单编号'))
       产品  数量    金额
订单编号               
d001  投影仪  52000
d002  马克笔  5300
d003  打印机  1298
d004  点钞机  1349
d005  复印纸  2100
d006  条码纸  634

或者用字典一对一修改

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
data = data.rename(columns={'订单编号':'编号', '产品':'产品名称', '数量':'订单数量', '金额':'订单金额'}, 
                   index = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E', 5:'F'})
print(data) 
     编号 产品名称 订单数量  订单金额
A  d001  投影仪   52000
B  d002  马克笔   5300
C  d003  打印机   1298
D  d004  点钞机   1349
E  d005  复印纸   2100
F  d006  条码纸   634

columns、index参数分别修改列、行标签

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
data.columns = ['编号', '产品名称', '订单数量', '订单金额']
data.index = ['A', 'B', 'C', 'D', 'E', 'F']
print(data)
     编号 产品名称 订单数量  订单金额
A  d001  投影仪   52000
B  d002  马克笔   5300
C  d003  打印机   1298
D  d004  点钞机   1349
E  d005  复印纸   2100
F  d006  条码纸   634

ta = data.rename(columns={‘订单编号’:‘编号’, ‘产品’:‘产品名称’, ‘数量’:‘订单数量’, ‘金额’:‘订单金额’},
index = {0:‘A’, 1:‘B’, 2:‘C’, 3:‘D’, 4:‘E’, 5:‘F’})
print(data)


```python
     编号 产品名称 订单数量  订单金额
A  d001  投影仪   5台  2000
B  d002  马克笔   5盒   300
C  d003  打印机   1台   298
D  d004  点钞机   1台   349
E  d005  复印纸   2箱   100
F  d006  条码纸   6卷    34

columns、index参数分别修改列、行标签

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
data.columns = ['编号', '产品名称', '订单数量', '订单金额']
data.index = ['A', 'B', 'C', 'D', 'E', 'F']
print(data)
     编号 产品名称 订单数量  订单金额
A  d001  投影仪   52000
B  d002  马克笔   5300
C  d003  打印机   1298
D  d004  点钞机   1349
E  d005  复印纸   2100
F  d006  条码纸   634
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-15 15:52:28  更:2021-11-15 15:52:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 6:19:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码