首页 > 其他分享 >Pandas基本使用(三)

Pandas基本使用(三)

时间:2023-11-23 22:24:58浏览次数:31  
标签:基本 xlsx excel pd 使用 print path data Pandas

  • 算数运算
"""
前面减后面
    add  加法
    sub  减法
    div  除法
    floordiv 整除
    mul 乘法
    pow 幂次方
后面减前面
    rsub  减法
    rdiv  除法
    rfloordiv 整除
    rpow 幂次方
替换无穷大
    replace(np.inf,0)
    np.nan   NaN
    np.inf   inf
    -np.inf  -inf
"""

path = r"C:\work\python\pandas_files\计算.xlsx"
data = pd.read_excel(path)
print(data)

# 1店的数都增加5
data['1店'] = data['1店'] + 5
print(data)
# 汇总两个店的数据
data['汇总'] = data["1店"] + data["2店"]
print(data)
# 进行空值的处理
data['汇总'] = data['1店'].fillna(0) + data['2店'].fillna(0)
print(data)

import numpy as np
# fill_value=0 在做运算前,将NaN值用0填充
# 加法
data['汇总'] = data['1店'].add(data['2店'], fill_value=0)
print(data)
# 减法sub
data['汇总'] = data['1店'].sub(data['2店'], fill_value=0)
print(data)
# 除法
data['汇总'] = data['1店'].div(data['2店'], fill_value=0)
print(data)
# 将无穷大替换为0
data.replace(np.inf, 0, inplace=True)
print(data)
# 相减
data['汇总'] = data['1店'].sub(data['2店'], fill_value=0)
# 后面减前面
data['汇总1'] = data['1店'].rdiv(data['汇总'], fill_value=0)
data.replace(-np.inf, 0, inplace=True)
print(data)
# 将NaN替换成0
data.replace(np.nan, 0, inplace=True)
print(data)
  • 分层索引
path = r"C:\work\python\pandas_files\销售.xlsx"
data = pd.read_excel(path, header=[0, 1])
print(data)

# 查看多层索引的列信息
print(data.columns)
# 取出土豆的销量
b = data[('土豆', '销量')]
print(b)
# 取出土豆的销量和毛利
b = data[[('土豆', '销量'), ('土豆', '毛利')]]
print(b)
# 取出土豆的销量和倭瓜的销量
b = data[[('土豆', '销量'), ('倭瓜', '销量')]]
print(b)
# 计算土豆和我挂的销量总和
b = data[('土豆', '销量')] + data[('倭瓜', '销量')]
print(b)
# 汇总土豆和倭瓜的销量和毛利
b = data['土豆'] + data['倭瓜']
print(b)
print(b.columns)
# 创建多层索引
b.columns = pd.MultiIndex.from_product([['总计'], b.columns])
print(b)
# 将汇总数据与原数据横向拼接
data = pd.concat([data, b], axis=1)
print(data)
  • 分箱
# 产生50个10-100之间的成绩
score = np.random.randint(10, 100, 50)
print(score)
# 对分组数据指定范围
xz = [0, 60, 70, 80, 100]
xzname = ['差', '中', '良', '优']
# 对数据进行分组
b = pd.cut(score, xz)
print(b)
# 显示重复值的数量
c = b.value_counts()
print(c)
# 如果上面统计出错,就可以构造一个Series对象来统计
c = pd.Series(b).value_counts()
print(c)
# 用优良中差来表示
b = pd.cut(score, xz, labels=xzname)
print(b.value_counts())

# 等平分箱
# 产生50个10-100之间的成绩
score = np.random.randint(10, 100, 50)
print(score)
# 最大值、最小值
print(score.max())
print(score.min())
# 将箱子平均分成5粉
b = pd.qcut(score, q=4)
print(b.value_counts())
  • describe()
"""
describe()
    count   该列的非NaN的个数
    mean    平均值
    std     标准差
    min     最小值
    25%     1/4分位数
    50%     2/4分位数
    75%     3/4分位数
    max     最大值
其他
    count   统计个数
    sum     求和
    mean    求平均值
    mad     求平均绝对方差
    median  求中位数
    min     最小值
    max     最大值
    argmin  最小值的索引位置
    argmax  最大值的索引位置
    idxmin  最小值的行索引
    idxmax  最大值的行索引
    mode    众数
    abs     绝对值
    prod    乘积    
"""

path = r"C:\work\python\pandas_files\数据统计.xlsx"
data = pd.read_excel(path)
print(data)

# 显示整个表的数值列的描述统计信息
b = data.describe()
print(b)
# 显示语文的描述统计信息
b = data['语文'].describe()
print(b)
# 求语文的最高分
b = data['语文'].max()
print(b)
# 每一列的最大值
b = data.max(numeric_only=True)
print(b)
# 设置索引列
data.set_index('姓名', inplace=True)
print(data)
# 最大值索引位置
b = data['语文'].argmax()
print(b)
# 最大值行索引
c = data['语文'].idxmax()
print(c)
  • 合并
import os
# 合并同一个文件夹中的所有excle文件
path = r"C:\work\python\pandas_files\excel的合并与拆分01\\"
# 创建一个空的表
data = pd.DataFrame()
# 得到文件夹中的所有文件
allfile = os.listdir(path)
# 遍历取出每一个文件
for fname in allfile:
    data1 = pd.read_excel(path+fname) # 读取excel文件
    data = pd.concat([data, data1], axis=0)  # 拼接
data.set_index("日期", inplace=True) # 设置索引
data.to_excel('合并.xlsx')  # 写入文件

# 同一个工作簿的多个Sheet合并
path = r"C:\work\python\pandas_files\excel的合并与拆分03\合并2.xlsx"
# 第二个参数
# sheet_name='Sheet1' 指定读取某一个工作表
# sheet_name=None  读取所有工作表
data = pd.read_excel(path, sheet_name=None)
print(data)
newdata = pd.DataFrame()
for v in data.values():
    newdata = pd.concat([newdata, v])
newdata.set_index("序号", inplace=True)
print(newdata)
newdata.to_excel("a合并.xlsx")
  • 拆分
# 将一个工作表拆分成多个excel文件中
path = r"C:\work\python\pandas_files\excel的合并与拆分03\拆分.xlsx"
data = pd.read_excel(path)
print(data)
# 对部门删除重复值
bmlst = data['部门'].drop_duplicates()
for bm in bmlst:
    b = data[data.部门 == bm]
    b.to_excel("a"+bm+'.xlsx')

# 将一个工作表拆分成同一个excel中的多个工作表
path = r"C:\work\python\pandas_files\excel的合并与拆分03\拆分.xlsx"
data = pd.read_excel(path)
print(data)
# 对部门删除重复值
bmlst = data['部门'].drop_duplicates()
with pd.ExcelWriter('a拆分.xlsx') as ew:
    for bm in bmlst:
        b = data[data.部门 == bm]
        b.to_excel(ew, sheet_name=bm, index=False)

标签:基本,xlsx,excel,pd,使用,print,path,data,Pandas
From: https://www.cnblogs.com/dogleftover/p/17852636.html

相关文章

  • idea的Java窗体可视化工具Swing UI Designer的简单使用(一)
    0、问题总结Warning:java:源值1.5已过时,将在未来所有发行版中删除:   Error:java:Compilationfailed:internaljavacompilererror:   1、窗体的初使用创建GUIForm      注意使用这个关闭模式:  使用jFrame.pack();替换jFrame.setSi......
  • Mac中使用sqlmap4burp++
    在mac中使用burp加载插件sqlmap4burp,发现报错:在系统偏好设置--安全性与隐私--隐私--完全磁盘访问权限钩上:......
  • Delphi获取当前系统时间(使用API函数GetSystemTime)
    在开发应用程序时往往需要获取当前系统时间。尽管Y2K似乎已经平安过去,但在我们新开发的应用程序中还是要谨慎处理“时间”问题。在《融会贯通--Delphi4.0实战技巧》(以下简称“该书”)第89页专门介绍了两种获取当前系统时间的方法,但这两种方法都存在不足或错误,以下就此进行讨......
  • 前端vue使用表单form或表格table时的注意事项
     如图,该table表格的data名字为:MyData因此在后面需要在表格里展示数据的时候需要给MyData赋值如下图  注意必须为 1result.data.data 不能是result.data......
  • django模板使用的两种方式 模板语法之变量
    模板语法之变量DTL:DjangoTemplateLanguage1模板中使用{{python变量}}############views.pydefindex(request):num=10ss='lqzishandsome'b=Falsell=[1,2,43]dic={'name':'lqz','age':18}deftes......
  • C#winform中使用SQLite数据库
    公众号「DotNet学习交流」,分享学习DotNet的点滴。SQLite简介SQLite是一种轻量级的关系型数据库管理系统(RDBMS),它以一个C库的形式提供。以下是SQLite数据库的一些关键特点:1、无服务器:SQLite是一种无服务器的数据库管理系统,这意味着它不需要单独的服务器进程来运行。应用程序直接......
  • word使用的奇技淫巧
    1、批量删除超链接ctrl+A全选Ctrl+Shift+F9,会取消所有的超链接2、快速统一图片大小选中一张图片,右击“大小和位置”设置好。选中下一张图片,按键F4重复上一步的操作步骤......
  • 软件测试/人工智能|如何使用ChatGPT编写符合PO模式的数据驱动测试框架
    简介上一篇文章我们介绍了使用ChatGPT帮我们编写自动化测试脚本,但是上文编写的脚本并不符合我们的PO设计模式,作为现在主流的设计模式,更加方便我们去编写脚本,一旦页面发生变动,我们的代码改动也会变小,所以我们的目标不是使用ChatGPT编写自动化脚本,而是要使用ChatGPT来编写符合PO设......
  • 软件测试/人工智能|使用ChatGPT帮我们查找bug
    简介作为一个程序员,发现自己写的bug其实不是一件容易的事情,我们会更容易发现别人的错误,对于自己代码里的错误会更难发现,这也是测试的必要性。通常,我们会有以下几种方式来检测发现代码中的bug:研发编写单元测试。代码扫描,比如sonarqube,findbugs。测试人员进行集成测试现在有......
  • 软件测试/人工智能|如何使用ChatGPT帮我们写自动化测试脚本
    简介当今软件开发中,自动化测试脚本的编写是确保软件质量和稳定性的重要步骤。随着人工智能和自然语言处理技术的进步,像ChatGPT这样的语言模型已经成为编写自动化测试脚本的有力工具。ChatGPT可以根据给定的指令和条件生成代码,简化了测试流程并提高了效率。演练示例假设我们有......