【目录】
1. pd.DataFrame()创建DataFrame对象
2. df.to_excel()将DataFrame对象写入xlsx文件
3. 非空数据
4. df.info()函数结果演示
5. df.info()语法解析
6. 课堂练习
【正文】
学习时间:30分钟。
1. pd.DataFrame()创建DataFrame对象
【知识回顾】
DataFrame是Pandas库中的一个数据结构,它类似于Excel表格,可以存储和处理大量的数据。
【pd.DataFrame()语法】
pd.DataFrame(data,index,columns)
【课堂练习】
创建一个DataFrame对象。
列索引为:姓名、年龄、成绩。
内容随意填充。
【代码示例】
# 导入pandas库并简写为pd
import pandas as pd
# 要传入的数据类型为字典
# 字典的3个键姓名、年龄、成绩是DataFrame对象的列索引
# 字典的值是DataFrame对象的数据
data = {
'姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十', '郑十一', '马十二'],
'年龄': [18, 19, 20, 21, 22, 23, 24, 25, 26, 27],
'成绩': [85, 92, 78, 89, 95, 87, 90, 93, 80, 88]
}
# 实例化类创建对象:对象名 = 类名()
# df是对象名,DataFrame是类名
df = pd.DataFrame(data)
# 输出DataFrame对象
print(df)
【终端输出】
姓名 年龄 成绩
0 张三 18 85
1 李四 19 92
2 王五 20 78
3 赵六 21 89
4 钱七 22 95
5 孙八 23 87
6 周九 24 90
7 吴十 25 93
8 郑十一 26 80
9 马十二 27 88
代码没有对行索引进行明确。
0 1 2 ...9
是默认行索引。
姓名、年龄、成绩
是列索引。
2. df.to_excel()将DataFrame对象写入xlsx文件
【代码示例】
# 导入pandas库并简写为pd
import pandas as pd
# 要传入的数据类型为字典
# 字典的3个键姓名、年龄、成绩是DataFrame对象的列索引
# 字典的值是DataFrame对象的数据
data = {
'姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十', '郑十一', '马十二'],
'年龄': [18, 19, 20, 21, 22, 23, 24, 25, 26, 27],
'成绩': [85, 92, 78, 89, 95, 87, 90, 93, 80, 88]
}
# 创建对象:对象名 = 类名()
# df是对象名,DataFrame是类名
df = pd.DataFrame(data)
# df是DataFrame对象名
# to_excel是DataFrame对象的一个方法
# 作用是将DataFrame写入xlsx文件
# 示例1.xlsx是文件名及文件的相对路径
# index=False表示不保存索引列
df.to_excel('示例1.xlsx', index=False)
我的代码所在的绝对路径如下:
D:\安迪笔记\4.数据分析\8\8.py
运行上面的代码,在代码所在的文件夹D:\安迪笔记\4.数据分析\8
下生成了一个名为示例1.xlsx
的文件。
打开示例1.xlsx
,内容如下所示:
【修改示例1.xlsx文件】
为了后面讲解缺失值概念,我将表格内容修改如下:
保存并将文件命名为示例2.xlsx
。
3. 非空数据
非空数据指的是在某个数据集或数据结构中,该数据项不为空或不缺失的情况。
具体来说,非空数据是指存在有效值、有效信息或有效内容的数据。
示例2.xlsx
表格中:
姓名列10个单元格都有内容,则表示该列10个非空数据。
年龄列有8个单元格有内容,表示该列有8个非空数据。
成绩列有7个单元格有内容,表示该列有7个非空数据。
4. df.info()函数结果演示
read_excel()
函数是pandas库中用于读取Excel文件的函数。
【语法】
pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None)
【参数】
io:要读取的Excel文件的路径(字符串)或者可迭代对象,例如文件对象、Excel表格URL、Excel文件中的表名等。
【目标任务】
用pd.read_excel
读取示例2.xlsx
,得到了一个DataFrame对象。
代码最后添加一个函数df.info()
,看看会输出什么。
【代码示例】
# 导入pandas库并简写为pd
import pandas as pd
# 文件的绝对路径
file = r"D:\安迪笔记\4.数据分析\8\示例2.xlsx"
# 调用函数:库名.函数名()
# pd是库名
# read_excel是函数名
# io参数=file,file是路径
df = pd.read_excel(file)
df.info()
【终端输出】
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 姓名 10 non-null object
1 年龄 8 non-null float64
2 成绩 7 non-null float64
dtypes: float64(2), object(1)
memory usage: 368.0+ bytes
【输出结果解析】
<class 'pandas.core.frame.DataFrame'>
DataFrame对象的类型是pandas.core.frame.DataFrame。
RangeIndex: 10 entries, 0 to 9
DataFrame有10行数据,行索引从0到9。
Data columns (total 3 columns):
DataFrame有3列数据。
Column Non-Null Count Dtype
Column
下面的内容表示列名。
Non-Null Count
表示非空计数。
Dtype
表示数据类型。
0 姓名 10 non-null object
1 年龄 8 non-null float64
2 成绩 7 non-null float64
姓名列有10个非空数据,类型是object,即字符串类型。 年龄列有8个非空数据,类型是float64,即浮点数类型。 成绩列有7个非空数据,类型是float64,即浮点数类型。
在输出的信息中,我们可以看到数据的总量为10。
但年龄、成绩2列的非空数据分别为8和7,都比数据总量10要小。
dtypes: float64(2), object(1)
两列的数据类型是float64(浮点数),另外一列的数据类型是object(字符串)。
memory usage: 368.0+ bytes
整个DataFrame占用368.0字节的内存。
5. df.info()语法解析
【作用】
df.info()
函数可以提供关于DataFrame对象的详细信息,包括列名、非空值数量、数据类型等。
【语法】
df.info(verbose=True, buf=None, max_cols=None, memory_usage=True, null_counts=True)
【参数】
verbose(可选):控制输出的详细程度。默认为 True,会显示所有列的信息。如果设置为 False,则只显示索引类型、列数和非空值的数量。 buf(可选):指定输出结果的缓冲区,默认为 None。 max_cols(可选):控制输出的最大列数。如果 DataFrame 的列数超过此值,则会省略一部分列的信息。默认为 None,表示不限制列数。 memory_usage(可选):控制是否显示内存使用情况。默认为 True,会显示每列的内存使用量。 null_counts(可选):控制是否计算并显示每列的缺失值数量。默认为 True,会显示每列的缺失值数量
注意df.info
的参数都是可选参数,因此我们可以不传递参数。
初学者以上参数仅做了解即可。
【返回值】
df.info
函数会显示 DataFrame对象的以下信息:
列的索引名称。 每列的数据类型。 每列的非空值数量。 占用的系统空间。 每列的内存使用量(如果设置了 memory_usage=True) 每列的缺失值数量(如果设置了 null_counts=True)
6. 课堂练习
在数据分析中,我们通常会用df.info()
查看下文件的数据情况。
当非空数据与数据总量不一致时,说明这份数据有可能存在缺失值。
文件如果存在大量缺失值,我们要先处理这些缺失值才能进行后续的分析。
【目标任务】
示例3.xlsx
中存储了10万条销售数据,请你用df.info
函数输出该文件的相关信息。
【步骤分析】
确定要操作的文件的路径。
read_excel
函数读取Excel文件,得到一个DataFrame对象。
df.info()
查看DataFrame对象相关信息。
【代码示例】
# 导入pandas库并简写为pd
import pandas as pd
# 文件的绝对路径
file = r"D:\安迪笔记\4.数据分析\8\示例3.xlsx"
# 调用函数:库名.函数名()
# pd是库名
# read_excel是函数名
# io参数=file,file是路径
df = pd.read_excel(file)
# 查看DataFrame对象相关信息
df.info()
【终端输出】
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100000 entries, 0 to 99999
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 订单编号 100000 non-null object
1 日期 99014 non-null object
2 省份 99014 non-null object
3 订单量 99018 non-null float64
4 单价 99016 non-null float64
5 销售额 99018 non-null float64
dtypes: float64(3), object(3)
memory usage: 4.6+ MB
【输出结果分析】
RangeIndex: 100000 entries, 0 to 99999
DataFrame有10万条数据,行索引从0到9999。
Data columns (total 6 columns):
DataFrame有6列数据。
0 订单编号 100000 non-null object
1 日期 99014 non-null object
2 省份 99014 non-null object
3 订单量 99018 non-null float64
4 单价 99016 non-null float64
5 销售额 99018 non-null float64
订单编号
有10万个非空数据,类型是object,即字符串类型。日期
列有99014个非空数据,类型是object,即字符串类型。省份
列有99014个非空数据,类型是object,即字符串类型。订单量
列有99018个非空数据,类型是float64,即浮点数类型。单价
列有99016个非空数据,类型是float64,即浮点数类型。销售额
列有99018个非空数据,类型是float64,即浮点数类型。
【温馨提示】
示例表格文件和代码源文件都存在PDF所在的文件夹里,可以自己实操练习。
没有PDF文件的可以联系作者获取表格文件。