pandas数量查寻使用大全

import pandas as pd
import numpy as nu
import matplotlib.pyplot as plt
import matplotlib
import  os
import openpyxl
import xlrd
#xlrd和openpyxl不用导入但一定要安装,不然处理xlsx会报错

#------------解决乱码问题--------------------
#step1:手动创建一个figure对象,相当于一个空白的画布
figure = plt.figure()
plt.rcParams['font.sans-serif'] = ['SimHei']
# 指定字体
plt.rcParams['axes.unicode_minus'] = False
# 解决保存图像是负号'-'显示为方块的问题
#-----------------------更多字体指定-----------------------
#plt.rcParams['font.sans-serif']=['STSong']     ## 中文宋体
#plt.rcParams['font.sans-serif']=['SimHei']     ## 中文黑体
#plt.rcParams['font.sans-serif']=['Kaiti']      ## 中文楷体
#plt.rcParams['font.sans-serif']=['Lisu']       ## 中文隶书
#plt.rcParams['font.sans-serif']=['FangSong']   ## 中文仿宋
#plt.rcParams['font.sans-serif']=['YouYuan']    ## 中文幼圆
#---------------------------------------------------------

"""
#----------------------------写入excel--------------------------
pandas.read_excel(filename, sep, sheet_name,header,usecols,encoding)

filename:文件路径,可以设置为绝对路径或相对路径
sep:分隔符,常用的有逗号 , 分隔、\t 分隔,默认逗号分隔,read_table默认是'\t'(也就是tab)切割数据集的
sheet_name 指定第几张表sheet1
header:指定表头,即列名,默认第一行,header = None, 没有表头,全部为数据内容
encoding:文件编码方式,不设置此选项, Pandas 默认使用 UTF-8 来解码。
index_col ,指定索引对应的列为数据框的行标签,默认 Pandas 会从 0、1、2、3 做自然排序分配给各条记录指定某一列为索引
usecols指定要读取哪一列,如要读1和2列  usecols=[0,1]


表格内容读出来后转成字典,因为写入pd是直接用字典方法写的:
data = pd.read_execl("表名")
data2 = data.to_dict(orient="records")
再用字典方法写进:
DataFrame(data2).to_execl("表名",sheet_name="Sheet1",index=False,header=True)

别一种单个写入:
raw_data = [{"name":"yeng","age":22}]
data = pd.DataFrome(raw_data)


#cur_dir = os.path.dirname(__file__)
#建立一个dataframe数量类型
#res = pd.DataFrame(columns=("姓名", "年纪", "性别"))
#建立表头
#res.loc[1]=["老一", 22, "男"]
#新建立一行数据
#res.to_excel(os.path.join(cur_dir, "2.xlsx"))
#建立 文件并写入上面的数据
#df =pd.read_excel(os.path.join(cur_dir, "2.xlsx"))
#读取数据
#print(df.head())
#--------------------------------------------------------
#cur_dir = os.path.dirname(__file__)
#df2 = pd.DataFrame({"性别":["女","男"], "姓名":["老一","老二"]})
#df2.to_excel(os.path.join(cur_dir, "2.xlsx"), sheet_name="sheet1", startcol=0, index=False)
#新建立个表写入两列数据,重第一列开始

"""

#-------------------------读excel数据----------------------

"""
pandas.read_excel(filename, sep, sheet_name,header,usecols,encoding)

filename:文件路径,可以设置为绝对路径或相对路径
sep:分隔符,常用的有逗号 , 分隔、\t 分隔,默认逗号分隔,read_table默认是'\t'(也就是tab)切割数据集的
sheet_name 指定第几张表sheet1
header:指定表头,即列名,默认第一行,header = None, 没有表头,全部为数据内容
encoding:文件编码方式,不设置此选项, Pandas 默认使用 UTF-8 来解码。
index_col ,指定索引对应的列为数据框的行标签,默认 Pandas 会从 0、1、2、3 做自然排序分配给各条记录指定某一列为索引
usecols指定要读取哪一列,如要读1和2列  usecols=[0,1]

遍历所有的行:
data = pd.read_execl("表名")
for index,row in data.iterrows():
	print(row["name"],row["age"])
	print(row[0],row[1])



result = pd.read_excel("送货模版.xlsx")
print(result)
默认读第一个sheet1表

#  默认读取第一个sheet,读取第2个sheet如下
result = pd.read_excel('test1.xlsx',sheet_name=1)
print(result)


# 查看列索引列表(表头)
result = pd.read_excel("送货模版.xlsx")
print(result.drop(labels=[1,3], axis=0))
删除第一和第三行


result = pd.read_excel("送货模版.xlsx")
print(result.drop_duplicates())
删除重复的值


result = pd.read_excel("送货模版.xlsx")
print(result.drop(labels=["配送时间"], axis=1))

删除列


result = pd.read_excel("送货模版.xlsx")
print(result.rename(columns={"配送时间":"发货"}))
改表头


df = pd.read_excel("送货模版.xlsx")
#print(df.dtypes)
#查看表各列类型

data = df["配送时间"]
data.plot()
plt.show()
#出单列统计图

"""

#-------------------csc文件操作-------------------------
"""
#data = pd.read_csv("1.csv", encoding='gb2312')
#/读取整个表的文件,如果报错就换gb18030、utf-8、gbk

"""

#print(type(data)) //查看类型

#print(data.head(10))
#打印前10行

#print(data.columns)
#以列表等式打印出第一行的内容

#print(data.tail(10))
#打印后10行

#print(data.info())
#表的概述

#print(data.describe())
#基本的统计信息:最大值、最小值、平均值等、多少行

#print(data.dtypes)
#基本的数据类型

#print(data.loc[3])
#取第三行数据

#print(data.loc[[1,2],["学校","地址"]])
#取第2和第3行的学校列和地址列,因为是从0开始所以是第2和3行

#print(data.iloc[:3,:4])
#取前面3行和前面4列

#data1 = data.iloc[:,:]
#打印整个表中所有的数据

#data1 = data.iloc[:32,3:]
#统计前32行和最后3列

#data1 = data["配送时间"]
#单独取一列



#print(data.iloc[[1,2],[1,3]])
#取第1、2行的1和3列

#print(data[data["配送时间"] == 4.26])
#取配送时间这列的数为4.26的

#print(data[data["配送时间"] > 5])
#取配送时间大于5的


#print(data[(data["智能交互黑板数量"] > 40) & (data["配送时间"] > 5)])
#取配送时间大于5的并且智能交互黑板数量大于40的

#print(data[(data["智能交互黑板数量"] > 40) & (data["配送时间"] > 5)].count())
#取配送时间大于5的并且智能交互黑板数量大于40的各列的数量有多少进行统计


#print(data[(data["智能交互黑板数量"] > 40) | (data["智能交互黑板数量"] > 20)])
#满足任意一种就打印出来

#print(data[data["配送时间"].isin([4.26,6.12])])
#取配送时间里面包含有4.26和6.12的行

#print(data.isnull().sum())
#查整个表各列分别有多少个空格子

#print(data.isnull().values.any())
#查整个表有没有空格子,有就返回True

#print(data["配送时间"].isnull().sum())
#查配送时间这列有多少个空格子

#print(data.notnull().sum())
#查整个表各列分别有多少个非空的格子

#data1 = data.fillna(00)
#把空格子全部用00填进去
#print(data1.isnull().sum())
#查看是不是空格子都没了

#ata1 = data["配送时间"].fillna(data["配送时间"].mean())

#print(data1.isnull().sum())
#查看是不是空格子都没了

#print(data.groupby("配送时间").count())
#按配送时间分组显示

#print(data.sort_values(by="配送时间", ascending=False))
#按配送时间从大小到排序

#df = pd.merge(data1,data2,on="name",how="inner")
#查表data1和data2两个表以name为关联查寻

#df = pd.merge(data1,data2,on="name",how="left")
#查表data1和data2两个表以左边data1表的name为主查寻,即左查寻

#df = pd.merge(data1,data2,on="name",how="outer")
#查表data1和data2两个表以左边data2表的name为主查寻,即右查寻


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

项目工程师余工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值