资讯详情

暑期实践第十七天 2022-7-20

今日学习阶段:

1.DataFrame对象

DataFrame是Pandas库中的一种数据结构是由多种类型的列组成的二维表数据结构,类似于Excel、SQL或Series由对象组成的字典。DataFrame是最常用的Pandas对象,它与Series对象支持多种类型的数据。

1.1图解DataFrame对象

Dataframe既有行索引,也有列索引,可以看作是由Series但是这些对象组成的字典Series对象共享索引。

import pandas as pd pd.set_option('display.unicode.east_asian_width', True) data = [[110, 105, 99], [105, 88, 115], [109, 120, 130]] index = [0, 1, 2] columns = [语文’, '数学', '英语'] df = pd.DataFrame(data = data, index = index, columns = columns) print(df) for col in df.columns:     series = df[col]     print(series)

输出结果

   语文  数学  英语 0   110   105    99 1   105    88   115 2   109   120   130 0    110 1    105 2    109 Name: 语文, dtype: int64 0    105 1     88 2    120 Name: 数学, dtype: int64 0     99 1    115 2    130 Name: 英语, dtype: int64

1.2创建一个DataFrame对象

主要用于创建DataFrame语法如下:方法:

pandas.DataFrame(data, index, columns, dtype, copy)

1.2.1 通过二维数组创建DataFrame

import pandas as pd pd.set_option('display.unicode.east_asian_width', True) data = [[110, 105, 99], [105, 88, 115], [109, 120, 130]] columns = [语文’, '数学', '英语'] df = pd.DataFrame(data = data, columns = columns) print(df) 

输出结果

   语文  数学  英语 0   110   105    99 1   105    88   115 2   109   120   130

1.2.22通过字典创建成绩表

import pandas as pd pd.set_option('display.unicode.east_asian_width', True) df = pd.DataFrame({     '语文':[110, 105, 99],     [105, 88, 115],     [109, 120, 130],     班级 }, index = [0, 1, 2]) print(df)

输出结果

   语文  数学  英语     班级 0   110   105   109  高一7班 1   105    88   120  高一7班 2    99   115   130  高一7班

在上述代码中,班级value值是单个数据,所以每行都添加了相同的数据高一7班。

2.导入外部数据

2.1导入.xls或.xlsx文件

主要使用Pandas的read_excel方法

pandas.read_excel()自行查询内部语法

import pandas as pd #解决数据输出时列名不对齐问题 pd.set_option('display.unicode.east_asian_width', True) df = pd.read_excel('1月.xlsx') print(df.head())                   #输出前5条数据 

输出结果

  买家会员名  买方实际支付金额 收货人姓名            宝贝标题 0      mrhy1             41.86     周某某      零基础学Python 1      mrhy2             41.86     杨某某      零基础学Python 2      mrhy3             48.86     刘某某      零基础学Python 3      mrhy4             48.86     张某某      零基础学Python 4      mrhy5             48.86     赵某某  C#项目开发实战入门

2.1.1导入指定sheet页

一个Excel多个文件Sheet页面,通过设置sheet_name可导入指定参数Sheet页的数据。

import pandas as pd pd.set_option('display.unicode.east_asian_width', True) df=pd.read_excel('1月.xlsx', sheet_name='莫寒') print(df.head())

运行程序输出部分数据

   买家会员名 买家支付宝账号  买方实际支付金额  订单状态  ... 订单备注 宝贝总数量      类别 图书编号 0  mmbooks101       ********             41.86  交易成功  ...    'null          1  全彩系列      B16 1  mmbooks102       ********             41.86  交易成功  ...    'null          1  全彩系列      B16 2  mmbooks103       ********             48.86  交易成功  ...    'null          1  全彩系列      B17 3  mmbooks104       ********             48.86  交易成功  ...    'null          1  全彩系列      B17 4  mmbooks105       ********             48.86  交易成功  ...    'null          1  全彩系列      B18 

除名字外,还可以从0开始指定顺序,例如,sheet_name=第一个是导入的sheet页面数据,sheet_name=表示导入第二个Sheet以此类推。

如果不指定sheet_name默认导入第一个参数Sheet页的数据

2.1.指定行列数据通过行列索引导入指定行列数据

DataFrame是二维数据结构,既有行索引又有列索引。当导入时Excel行索引在数据中会自动生成,如0、1、2,而列索引则默认将第0行作为列索引。

如果指定行索引导入Excel需要设置数据index_col参数。如下

import pandas as pd pd.set_option('display.unicode.east_asian_width', True) df1=pd.read_excel('1月.xlsx', index_col=0) print(df1.head())

输出结果

            买方实际支付金额 收货人姓名            宝贝标题 买家会员名                                                  mrhy1                  41.86     周某某      零基础学Python mrhy2                  41.86     杨某某      零基础学Python mrhy3                  48.86     刘某某      零基础学Python mrhy4                  48.86     张某某      零基础学Python mrhy5                  48.86     赵某某  C#项目开发实战入门 

若通过指定列索引导入excel需要设置数据header参数如下:

import pandas as pd pd.set_option('display.unicode.east_asian_width', True) df2=pd.read_excel('1月.xlsx', header=1) print(df2.head()) 

输出结果

   mrhy1  41.86  周某某      零基础学Python 0  mrhy2  41.86  杨某某      零基础学Python 1  mrhy3  48.86  刘某某      零基础学Python 2  mrhy4  48.86  张某某      零基础学Python 3  mry5  48.86  赵某某  C#项目开发实战入门
4  mrhy6  48.86  李某某  C#项目开发实战入门

如果将数字作为列索引,可以设置header参数为None,如下:

import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
df3=pd.read_excel('1月.xlsx', header=None)
print(df3.head())

输出结果

            0                 1           2               3
0  买家会员名  买家实际支付金额  收货人姓名        宝贝标题
1       mrhy1             41.86      周某某  零基础学Python
2       mrhy2             41.86      杨某某  零基础学Python
3       mrhy3             48.86      刘某某  零基础学Python
4       mrhy4             48.86      张某某  零基础学Python

2.1.3导入指定列数据

可以通过usecols参数指定需要的列,从0开始(表示第1列,以此类推)

import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
df1=pd.read_excel('1月.xlsx', usecols=[0])
print(df1.head())

注意参数为列表

输出结果

  买家会员名
0      mrhy1
1      mrhy2
2      mrhy3
3      mrhy4
4      mrhy5

如果导入多列,则可以在列表中指定多个值

df1=pd.read_excel('1月.xlsx', usecols=[0, 3])

不可以使用切片

也可以指定列名称

df1=pd.read_excel('1月.xlsx', usecols=['买家会员名', '宝贝标题'])

输出结果

  买家会员名            宝贝标题
0      mrhy1      零基础学Python
1      mrhy2      零基础学Python
2      mrhy3      零基础学Python
3      mrhy4      零基础学Python
4      mrhy5  C#项目开发实战入门

2.2导入.csv文件

导入.csv文件时主要使用Pandas的read_csv方法

pandas.read_csv()   参数自行查询

import pandas as pd
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
pd.set_option('display.unicode.east_asian_width', True)
df1=pd.read_csv('1月.csv', encoding='gbk')
print(df1.head())

上述代码中指定了编码格式,即encoding='gbk'。Python常用的编码格式是UTF-8和GBK格式,默认格式为UTF-8.导入.csv文件需要用encoding指定编码格式。将excel文件另存为.csv文件时,默认编码格式为GBK,此时导入就需要设置为GBK,与原文件保持一致,否则会报错。

2.3导入txt文件

导入.txt文件同样使用Pandas模块的read_csv方法,不同的是需要指定sep参数(如制表符\t)。read_csv方法读取.txt文件后将返回一个DataFrame对象,像表格一样的二维数据结构。

import pandas as pd
df1=pd.read_csv('1月.txt', sep='\t', encoding='gbk')
print(df1.head())

2.4导入HTML网页

导入HTML网页数据主要使用Pandas的read_html方法,该方法用于导入带有table标签的网页表格数据

pandas.read_html()参数自行查询

使用read_html方法前,首先要确定网页表格是否为table标签。右键检查表格元素,查看代码是否含有<table>...</table>字样,确定后才可以使用。

import pandas as pd
df = pd.DataFrame()
url_list = ['http://www.espn.com/nba/salaries/_/seasontype/4']
for i in range(2, 13):
    url = 'http://www.espn.com/nba/salaries/_/page/%s/seasontype/4' % i
    url_list.append(url)
#遍历网页中的table读取网页表格数据
for url in url_list:
    df = df.append(pd.read_html(url), ignore_index=True)
#列表解析:遍历dataframe第3列,以子字符串$开头
df = df[[x.startswith('$') for x in df[3]]]
print(df)
df.to_csv('NBA.csv',header=['RK','NAME','TEAM','SALARY'], index=False)

输出结果

       0                      1                      2            3
1      1      Stephen Curry, PG  Golden State Warriors  $48,070,014
2      2  Russell Westbrook, PG     Los Angeles Lakers  $47,063,478
3      3       LeBron James, SF     Los Angeles Lakers  $44,474,988
4      4       Kevin Durant, PF          Brooklyn Nets  $44,119,845
5      5       Bradley Beal, SG     Washington Wizards  $43,279,250

标签: bradley端子块定时继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台