pandas 统计分析 DataFrame的常用操作

查看DataFrame的常用属性
在这里插入图片描述

#DataFrame的基本属性
data = pd.read_excel('output1.xlsx')
print(type(data))
# <class 'pandas.core.frame.DataFrame'>
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              白饭/大碗
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值