栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第4章:pandas模块入门

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第4章:pandas模块入门

文章目录
    • 第4章 pandas模块入门
      • 4.1 数据结构
        • 4.1.1 Series对象
        • 4.1.2 Dataframe对象
      • 4.2 读取数据
        • 4.2.1 读取Excel数据:read_excel()函数
          • 1. 读取特定工作簿:sheet_name参数
          • 2. 指定列标签:header参数
          • 3. 指定行标签:index_col参数
          • 4. 读取指定列:usecols参数
        • 4.2.2 读取csv文件数据:read_csv()函数
      • 4.3 查看数据的行数和列数
        • 4.3.1 查看数据的前几行:head()函数
        • 4.3.2 查看数据的行数和列数:shape属性
        • 4.3.3 查看数据的类型
          • 1. info()函数
          • 2. dtype参数
          • 3. astype()函数
      • 4.4 选择数据
        • 4.4.1 选择行数据:loc()、iloc()函数
          • 1. 挑选单行数据
          • 2. 挑选多行数据
          • 3. 挑选满足条件的行
        • 4.4.2 选择列数据:iloc()函数
          • 1. 挑选单列数据
          • 2. 挑选多列数据
        • 4.4.3 同时选择行列数据
      • 4.5 修改行标签和列标签:columns、index参数;set_index()函数

第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参数

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

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

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data)
   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34

可以看出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  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34

header=1时结果如下:

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, header=1)
print(data)
   d001  投影仪  5台  2000
0  d002  马克笔  5盒   300
1  d003  打印机  1台   298
2  d004  点钞机  1台   349
3  d005  复印纸  2箱   100
4  d006  条码纸  6卷    34

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  投影仪  5台  2000
2  d002  马克笔  5盒   300
3  d003  打印机  1台   298
4  d004  点钞机  1台   349
5  d005  复印纸  2箱   100
6  d006  条码纸  6卷    34
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  投影仪  5台  2000
d002  马克笔  5盒   300
d003  打印机  1台   298
d004  点钞机  1台   349
d005  复印纸  2箱   100
d006  条码纸  6卷    34

index_col=0时

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=1)
print(data)
     订单编号  数量    金额
产品                 
投影仪  d001  5台  2000
马克笔  d002  5盒   300
打印机  d003  1台   298
点钞机  d004  1台   349
复印纸  d005  2箱   100
条码纸  d006  6卷    34
4. 读取指定列:usecols参数

usecols=[2]:指定第二列

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, usecols=[2])
print(data)
   数量
0  5台
1  5盒
2  1台
3  1台
4  2箱
5  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:Users14051AppDataRoamingTyporatypora-user-imagesimage-20211114192949607.png)]

import pandas as pd
data = pd.read_csv('订单表.csv')
print(data)
   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34

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

nrows=3时

import pandas as pd
data = pd.read_csv('订单表.csv', nrows=3)
print(data)
   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
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  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100

指定head(3)时如下

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data.head(3))
   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
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  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34
(6, 4)
4.3.3 查看数据的类型 1. info()函数
import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name = 3)
print(data.info())

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  投影仪  5台  2000.0
1  d002  马克笔  5盒   300.0
2  d003  打印机  1台   298.0
3  d004  点钞机  1台   349.0
4  d005  复印纸  2箱   100.0
5  d006  条码纸  6卷    34.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  投影仪  5台  2000
d002  马克笔  5盒   300
d003  打印机  1台   298
d004  点钞机  1台   349
d005  复印纸  2箱   100
d006  条码纸  6卷    34
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  马克笔  5盒  300
d004  点钞机  1台  349

iloc()挑选:

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

或者给出区间

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data.iloc[1:5])
       产品  数量   金额
订单编号              
d002  马克笔  5盒  300
d003  打印机  1台  298
d004  点钞机  1台  349
d005  复印纸  2箱  100
3. 挑选满足条件的行
import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
a = data['金额'] < 300   #挑选金额>300的行
print(data[a])
       产品  数量   金额
订单编号              
d003  打印机  1台  298
d005  复印纸  2箱  100
d006  条码纸  6卷   34
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  投影仪  5台
1  马克笔  5盒
2  打印机  1台
3  点钞机  1台
4  复印纸  2箱
5  条码纸  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  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34

set_index()设置行标签

import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data.set_index('订单编号'))
       产品  数量    金额
订单编号               
d001  投影仪  5台  2000
d002  马克笔  5盒   300
d003  打印机  1台   298
d004  点钞机  1台   349
d005  复印纸  2箱   100
d006  条码纸  6卷    34

或者用字典一对一修改

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  投影仪   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  投影仪   5台  2000
B  d002  马克笔   5盒   300
C  d003  打印机   1台   298
D  d004  点钞机   1台   349
E  d005  复印纸   2箱   100
F  d006  条码纸   6卷    34

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  投影仪   5台  2000
B  d002  马克笔   5盒   300
C  d003  打印机   1台   298
D  d004  点钞机   1台   349
E  d005  复印纸   2箱   100
F  d006  条码纸   6卷    34
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/499136.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号