一、认识

1、pandas 主要是用来进行数据处理的库,里面不仅包含了数据处理、甚至还有 统计分析、相关计算,其内部封装了numpy 相关组件

2、结构三种形式:series(一维)、dataframe(二维)、pannel(三维)

二、基础使用

1、加载数据

res = np.load("./国民经济核算季度数据.npz", allow_pickle=True)

2、获取数据

columns = res['columns']
values = res['values']print("columns:\n", columns)
print("values:\n", values)

3、数组拼接

# 数组拼接
data = np.concatenate(([columns],values),axis=0)
print(data)
print("*"*50)

4、将数组转化为dataframe(多了行,列索引)

index = ["index_" + str(i) for i in np.arange(69)]
df = pd.DataFrame(values, columns=columns, index=index)
print(df)
print(type(df))

5、获取时间 之后再获取前5行

# se = df['时间'][:5]
# se = df['时间'][['index_0','index_1','index_2']]
se = df['时间'][[0, 1, 2, 3, 4, 5]]  # 先获取时间这列,然后再获取序号为[0,1,2,3,4,5]的这6行
print(se)

6、将df 转化为series(只有行索引)

se = df['时间']
print(se)

7、自己生成一个df

d = {'col1': [0, 1, 2], 'col2': [1, 2, 3], 'col3': [1, 2, 3]}
# #
df = pd.DataFrame(data=d, index=['h', 'g', 'k'])
print(df)
print(type(df))#拿取多列
res = df[['col1','col2']]
# print(res)

8、自己生成一个series

se = pd.Series([1, 2, 3],index=['k','l','o'])print(se)
print(type(se

二、dataframe属性

import pandas as pd# 自己创建一个df
df = pd.DataFrame({'col1': [0, 1, 2],'col2': ["zs", 'li', 'zl'],'col3': [3.14, 5.20, 6.78]
},index=['index0', 'index1', 'index2'])
print(df)
print(type(df))# 查看dataframe 属性
print("df 的values:\n", df.values)  # 获取df的数组
print("df 的values的类型:\n", type(df.values))
print("df 的index:\n", df.index)  # 获取行索引名称
print("df 的columns:\n", df.columns)  # 获取列索引名称
print("df 的size:\n", df.size)  # 获取元素个数
print("df 的itemsize:\n", df.itemsize)  # df 没有这个属性
print("df 的dtypes:\n", df.dtypes)  # 每一列的数据类型
print("df 的shape:\n", df.shape)  # 获取df形状,以元组显示
print("df 的ndim:\n", df.ndim)  # 获取df维度----df  是2维的 没有别的维度

三、数据操作

1、数据存储与读取

(1)read_table

## 读取数据
info = pd.read_table("./meal_order_info.csv", encoding='ansi', sep=',', )  # 默认\t 分隔的
# 参数介绍
"""
header = info  自动识别列名  自动认为第一行是列名
index_col  设置行索引,如【0,1】是将第0列、第一列作为行索引
index_col=[0,1]
nrows  读取的时候读取前N 行
usecols ---指定读取的列
usecols=['info_id','emp_id']"""

(2)read_csv

## 读取数据
info = pd.read_csv("./meal_order_info.csv", encoding='ansi')  # csv 默认是逗号分隔# 参数介绍
"""
excel 文件读取 ---以.xlsx ,.xls结尾的文件被称为excel文件
header  以哪一行作为列名
index_col  同read_csv 中的index_col
names 同read_csv 中的names
parse_cols 还是在某些版本中作用"""

(3)read_excel

detail = pd.read_excel("./meal_order_detail.xlsx", sheetname=0)
print("detail:\n", detail)
print(type(detail))

(4)数据保存

参数介绍:

  • columns :指定需要保存的列
  • header :保存列索引
  • index : 保存行索引
  • index_label :给保存好的excle文件的行索引起个名称

保存为excel文件

detail = pd.read_excel("./meal_order_detail.xlsx", sheetname=0)detail.to_excel("./hh.xlsx",header=True,index=False)

保存为csv文件

detail = pd.read_excel("./meal_order_detail.xlsx", sheetname=0)
detail.to_csv("./hh.csv", header=True)

2、dataframe数据索引

import pandas as pd# 加载数据
detail = pd.read_excel("./meal_order_detail.xlsx")
print("detail :\n", detail)
print("detail的形状:\n", detail.shape)
print("detail的列索引:\n", detail.columns)print("*" * 80)#  先取列 再 取行----非同时索引,
# 数组是同时索引arr[行,列]
# 获取detail_id 之后再获取前5行
# se = detail['detail_id'][:5]
# 先获取detail_id这列,然后再拿取名称为[0,1,2,3,4]的这5行数据,也可以使用这几行的下标来获取
# se = detail['detail_id'][[0,1,2,3,4]]
# se = detail['detail_id'].head() # head 默认获取前5行
# se = detail['detail_id'].head(10) # head 获取前10行# 获取detail_id 之后再获取后5行
# se = detail['detail_id'][-5:] # 切片
# se = detail['detail_id'].tail() # tail  默认获取后5行
# se = detail['detail_id'].tail(10) # tail  获取后10行
# 获取单列 之后再获取行数据,单行的名称或者下标,
# 多行的名称列表 或者 下标列表
# print(se)
# 获取多列之后再获取行
# 如果是单列,直接写名称,如果是多列,需要将多列的名称组成一个列表
# df = detail[['detail_id','order_id']].head()
# df = detail[[0,1]].head() # 错误的,不能使用列的下标,只能使用列的名称
# print(df)# loc iloc 索引方式 ---同时索引
# detail.loc[行名称,列名称]
# detail.iloc[行下标,列下标]
#  单列 或者单行 直接写名称,如果是多列或者多行,需要用列表装起来
# res = detail.loc[[0,1,2,3,4],['detail_id','order_id']]
#  也能使用切片,从名称切到名称,包含首尾
res = detail.loc[0:5, 'detail_id':'dishes_id']
# 获取单行单列  直接放下标
# 获取多行多列,需要将行下标、列下标分别组成列表传进去
# res = detail.iloc[0,0]
# res = detail.iloc[:,[11,12]]
# print(res)#  ix --混合索引---既可以使用名称也可以使用下标的索引方式
# res1 = detail.ix[0:5,['discount_amt','discount_reason']]
#  ix  在行的维度上可以使用名称,在列的维度上也可以使用名称
#  ix  在行的维度上可以使用下标,在列的维度上也可以使用下标
# res1 = detail.ix[[0,1,2,3,4,5],0:1]
# # res1 = detail.ix[[0,1,2,3,4,5],0:'discount_reason'] # 错误的,可以混合,但是不能混搭
# print(res)
# print("********")
# print(res1)# 从效率上来说,ix 最慢,如果数据特别大,不推荐使用

3、dataframe数据的增删改

(1)增加

import pandas as pd# 加载数据
users = pd.read_excel("./users.xlsx")
print("users:\n", users)
print("users的列名称:\n", users.columns)
print('*' * 80)
# 给users  用户来新增一个next_year_age列
users.loc[:, 'next_year_age'] = users.loc[:, 'age'] + 1
#  给df 增加一列  直接添加列名,给列名下面赋值
print(users)

(2)删除

import pandas as pd# 加载数据
users = pd.read_excel("./users.xlsx")
print("users:\n", users)
print("users的列名称:\n", users.columns)
print(users.shape)
print('*' * 80)# drop
#  删除列  labels 指定列名   axis = 1  必须成对出现
# res = users.drop(labels=['sex','age'],axis=1,inplace=True)
# res = users.drop(labels=['sex','age'],axis=1,inplace=False)
# inplace = True 对原df 产生影响,返回一个None
# inplace = False 对原df 不产生影响,返回删除之后的结果
# print("res:\n",res)
# print(users.shape)#  删除 行 labels  指定行名  axis = 0 必须成对出现
# res = users.drop(labels=[0,1,2,3,4,5],axis=0,inplace=False)
# print("res:\n",res)
# print(users.shape)#  删除 age 为偶数的行
bool_id = users.loc[:, 'age'] % 2 == 0
# 获取age 为偶数的行的行名称
res = users.loc[bool_id, :].index
# print(res)users.drop(labels=res, axis=0, inplace=True)print(users.shape)

(3)修改

import pandas as pd# 加载数据
users = pd.read_excel("./users.xlsx")
print("users:\n", users)
print("users的列名称:\n", users.columns)
print('*' * 80)
# #  定位到sex 这一列数据
# res =  users.loc[:,'sex'] == '男'
# # print(res)
# #
# # print("*"*80)
# 获取到所有sex == '男'的 这些数据
# data = users.loc[res,'sex']
# print(data)
# print("*"*80)# #重新赋值
# users.loc[res,'sex'] = 'nan'
# print(users)
# print("*"*80)# 如果不加条件的更改
# users.loc[:,'sex'] = '0'
#
# print(users)# print(res)# 对于奇数的age 更改为0
# 1、找到age =='奇数'行---bool 数组
# bool_age = users.loc[:,'age'] % 2 != 0
#
# users.loc[bool_age,'age'] = 0
#
# print(users)# 把users  中的ORGANIZE_NAME  的统计班 改为0506
bool_name = users.loc[:,'ORGANIZE_NAME'] == '统计班'
users.loc[bool_name,'ORGANIZE_NAME'] ='0506'
print(users)

pandas数据处理基础部分相关推荐

  1. pandas数据处理基础之标准化与标签数值化

    fit(): Method calculates the parameters μ and σ and saves them as internal objects. 解释:简单来说,就是求得训练集X ...

  2. pandas数据处理基础——筛选指定行或者指定列的数据

    pandas主要的两个数据结构是:series(相当于一行或一列数据机构)和DataFrame(相当于多行多列的一个表格数据机构). 本文为了方便理解会与excel或者sql操作行或列来进行联想类比 ...

  3. 盘点一个Pandas数据处理基础题目(文末有学习彩蛋)

    点击上方"Python共享之家",进行关注 回复"资源"即可获赠Python学习资料 今 日 鸡 汤 戍鼓断人行,边秋一雁声. 大家好,我是皮皮. 一.前言 前 ...

  4. Pandas数据处理基础6---插值填充及其用法

    插值填充 插值是数值分析中一种方法.简而言之,就是借助于一个函数(线性或非线性),再根据已知数据去求解未知数据的值.插值在数据领域非常常见,它的好处在于,可以尽量去还原数据本身的样子. 我们可以通过 ...

  5. pandas数据处理 代码_使用Pandas方法链接提高代码可读性

    pandas数据处理 代码 We have been talking about using the Pandas pipe function to improve code readability. ...

  6. pandas | DataFrame基础运算以及空值填充

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第四篇文章,我们一起来聊聊DataFrame中的索引. 上一篇文章当中我们介绍了DataFrame数据结构当 ...

  7. R语言数据处理——基础篇 data.frame基本操作

    文章目录 R语言数据处理--基础篇 data.frame基本操作 data.frame的创建 数据访问.条件筛选与删除 数据访问 数据筛选 删除 使用`gather()`进行data.frame数据格 ...

  8. Pandas学习-基础

    Pandas学习-基础 文章目录 **Pandas学习-基础** 1.Pandas介绍 2.Pandas安装 3.Pandas基础数据结构 3.1.pandas数据结构介绍 Series介绍 **Se ...

  9. Pandas数据处理1、DataFrame删除NaN空值(dropna各种属性值控制超全)

    Pandas数据处理--渐进式学习 目录 Pandas数据处理--渐进式学习 前言 环境 DataFrame删除NaN空值 dropna函数参数 测试数据 删除所有有空的行 axis属性值 how属性 ...

最新文章

  1. JDK8特性--Stream(求和,过滤,排序)
  2. shell input value from console
  3. 定义系统消息 Specify system messages
  4. JavaScript页面校验
  5. SAP UI5 oApplicationFacade - where and when it is initialized
  6. 嫁给我好吗?| 今日最佳
  7. 1.9 编程基础之顺序查找 03 不高兴的津津 scratch
  8. 读EntityFramework.DynamicFilters源码_心得_示例演示02
  9. 天地图JS API制作专题图
  10. Kernel Method: 6.再生核希尔伯特空间理论
  11. Ubuntu20.04下opencv的安装
  12. 7-8 输出上三角队形,数值从大到小
  13. AliCDN,盛开在云端的花朵
  14. vue中鼠标移入移出事件种类以及区别
  15. 西门子SCL---S7通信
  16. 网易邮箱服务器怎么注册,按照这个步骤操作,轻松注册自己的邮箱,赶紧收藏吧...
  17. 2022年最新最全的Java零基础入门,零基础入门springboot,MySQL的学习
  18. python有趣的程序-20个有趣的Python深度学习应用程序
  19. 神经网络物联网应用技术就业前景【欢迎补充】
  20. c语言头文件包含嵌套问题和包含原则

热门文章

  1. web前端十种图片的hover效果(粗糙)
  2. 抖音矩阵号怎么搭建?短视频矩阵号营销方案分享
  3. 【quant!quant!!】一家国外金融公司的quant面试题
  4. 机器学习(深度学习)中的反向传播算法与梯度下降
  5. 微信小程序-bug-调用wx.login()无响应的原因和解决方案
  6. 同一交换机不同网段的主机间通信问题
  7. C语言read()函数:读文件函数
  8. 嘀嗒拼车成为全国首家获得政府备案的合乘平台
  9. mysql乾坤大挪移A库下的表去B库
  10. 【阅读笔记】End-to-End Learning for RIS-Aided Communication Systems