#DataFrame的基本属性
data = pd.read_excel('output1.xlsx')
print(type(data))
#
print(data.index)
"""
Int64Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
...
3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610],
dtype='int64', length=10037)
"""
print(data.columns)
"""
Index(['detail_id', 'order_id', 'dishes_id', 'logicprn_name',
'parent_class_name', 'dishes_name', 'itemis_add', 'counts', 'amounts',
'cost', 'place_order_time', 'discount_amt', 'discount_reason',
'kick_back', 'add_inprice', 'add_info', 'bar_code', 'picture_file',
'emp_id'],
dtype='object')
"""
print(data.dtypes)
"""
detail_id int64
order_id int64
dishes_id int64
logicprn_name float64
parent_class_name float64
dishes_name object
itemis_add int64
counts int64
amounts int64
cost float64
place_order_time datetime64[ns]
discount_amt float64
discount_reason float64
kick_back float64
add_inprice int64
add_info float64
bar_code float64
picture_file object
emp_id int64
dtype: object
"""
print(data.size)
# 190703
print(data.ndim)
# 2
print(data.shape)
# (10037, 19)
print(data.values)
"""
[[2956 417 610062 ..., nan 'caipu/104001.jpg' 1442]
[2958 417 609957 ..., nan 'caipu/202003.jpg' 1442]
[2961 417 609950 ..., nan 'caipu/303001.jpg' 1442]
...,
[5379 647 610012 ..., nan 'caipu/302001.jpg' 1094]
[5380 647 610054 ..., nan 'caipu/501003.jpg' 1094]
[5688 672 609953 ..., nan 'caipu/303004.jpg' 1089]]
"""
二、查改增删 DataFrame 数据
1、查看访问 DataFrame 中的数据——数据基本查看方式:
对单列数据的访问:DataFrame 的单列数据为一个 Series。根据 DataFrame 的定义可以 知晓 DataFrame 是一个带有标签的二维数组,每个标签相当每一列的列名。有以下两种 方式来实现对单列数据的访问。 以字典访问某一个 key 的值的方式使用对应的列名,实现单列数据的访问。
以属性的方式访问,实现单列数据的访问。(不建议使用,易引起混淆)
例:
以菜品订单为例,使用字典访问内部数据的方式访问 DataFrame 的单列数据——order_id
data = pd.read_excel('output1.xlsx')
order_id = data['order_id']
print(order_id)
以属性的方式访问,实现单列数据的访问。(不建议使用,易引起混淆)
对某一列的某几行访问:访问 DataFrame 中某一列的某几行时,单独一列的 DataFrame 可以视为一个 Series(另一种 pandas 提供的类,可以看作是只有一列的 DataFrame), 而访问一个 Series 基本和访问一个一维的 ndarray 相同。
对多列数据访问:访问 DataFrame 多列数据可以将多个列索引名称视为一个列表,同时 访问 DataFrame 多列数据中的多行数据和访问单列数据的多行数据方法基本相同。
以菜品订单为例,获取 dishes_name 列下的前 5 个数据:
data = pd.read_excel('output1.xlsx')
order_id = data['dishes_name'][:5]
print(order_id)
"""
0 蒜蓉生蚝
1 蒙古烤羊腿
2 大蒜苋菜
3 芝麻烤紫菜
4 蒜香包
Name: dishes_name, dtype: object
"""
以菜品订单为例,获取 dishes_name/order_id 列下的前 5 个数据:
data = pd.read_excel('output1.xlsx')
order_id = data[['dishes_name','order_id']][:5]
print(order_id)
"""
dishes_name order_id
0 蒜蓉生蚝 417
1 蒙古烤羊腿 417
2 大蒜苋菜 417
3 芝麻烤紫菜 417
4 蒜香包 417
"""
对某几行访问: 如果只是需要访问 DataFrame 某几行数据的实现方式则和上述的访问多列多行相似,选 择所有列,使用“:”代替即可
#不推荐使用这种方法
order5 = detail[:][1:6]
head 和 tail 也可以得到多行数据,但是用这两种方法得到的数据都是从开始或者末尾获 取的连续数据。
默认参数为访问 5 行,只要在方法后方的“()”中填入访问行数即可实现目标 行数的查看。
print('订单详情表中前五行数据为', '\n', data.head())
# print('订单详情表中后五个元素为:','\n',data.tail())
查看访问 DataFrame 中的数据——loc,iloc 访问方式:
loc 方法是针对 DataFrame 索引名称的切片方法,如果传入的不是索引名称,那么切片 操作将无法执行。利用 loc 方法,能够实现所有单层索引切片操作。loc 方法使用方法 如下。
DataFrame.loc[行索引名称或条件, 列索引名称]
print(data.loc[:5, ['dishes_name', 'order_id']])
使用 loc 方法和 iloc 实现多列切片,其原理的通俗解释就是将多列的列名或者位置作为 一个列表或者数据传入。
使用 loc,iloc 方法可以取出 DataFrame 中的任意数据。
在 loc 使用的时候内部传入的行索引名称如果为一个区间,则前后均为闭区间;
iloc 方 法使用时内部传入的行索引位置或列索引位置为区间时,则为前闭后开区间。
loc 内部还可以传入表达式,结果会返回满足表达式的所有值。
例:
以菜品订单为例,利用 loc 获取 order_id='458’的所有菜名名称:
import pandas as pd
data = pd.read_excel('output1.xlsx')
print(data.loc[data['order_id'] == 458, ['order_id','dishes_name']])
"""
order_id dishes_name
145 458 蒜香辣花甲
146 458 剁椒鱼头
147 458 凉拌蒜蓉西兰花
148 458 木须豌豆
149 458 辣炒鱿鱼
150 458 酸辣藕丁
151 458 炝炒大白菜
152 458 香菇鸡肉粥
153 458 干锅田鸡
154 458 桂圆枸杞鸽子汤
155 458 五香酱驴肉\r\n\r\n\r\n
156 458 路易拉菲红酒干红
157 458 避风塘炒蟹
158 458 白饭/大碗
"""