首页 > 其他分享 >pandas

pandas

时间:2023-11-12 10:01:46浏览次数:26  
标签:index df Series DataFrame pd pandas

使用pandas过程中出现的问题

1.pandas无法读取excel文件:xlrd.biffh.XLRDError: Excel xlsx file; not supported

应该是xlrd版本太高 解决方法,使用openpyxl打开xlsx文件

df = pd.read_excel('鄱阳湖水文资料.xlsx',engine='openpyxl') 

2、pandas索引问题

在Python pandas中,从0开始行列索引

3.pandas 时间序列之pd.date_range()

pd.date_range(
    start=None,#开始时间
    end=None,#截止时间
    periods=None,#总长度
    freq=None,#时间间隔
    tz=None,#时区
    normalize=False,#是否标准化到midnight
    name=None,#date名称
    closed=None,#首尾是否在内
    **kwargs,
)  

生成的日期为年月日时分秒 1961/1/8 0:00:00

4.pandas中series与DataFrame区别

Series是带索引的一维数组 Series对象的两个重要属性是:index(索引)和value(数据值) DataFrame的任意一行或者一列就是一个Series对象

创建Series对象:pd.Series(data,index=index)

  其中data可以是很多类型:

一个列表---------->pd.Series([1,2,3]) 一个ndarray------->pd.Series(np.random.randint(2),index=['a','b']) 一个python字典---->pd.Series({"a":2,"b":0}) 一个标量值-------->pd.Series(3,index=[1,2,3])

创建DataFrame对象:pd.DataFrame(data,index,columns)

与Series不同的是,DataFrame包括索引index和表头columns:

  其中data可以是很多类型:

包含列表、字典或者Series的字典 二维数组 一个Series对象 另一个DataFrame对象

5.dataframe保存进excel中多个sheet

    # 将日流量写入‘逐日流量’,将位置写入‘格网中的经纬度’
    writer = pd.ExcelWriter()
    df.to_excel(writer, sheet_name='逐日流量')
    df2.to_excel(writer, sheet_name='格网中的经纬度')
    writer.save()  # 后面可能有writer.close(),但实际不需要,save完后会自动关闭,加close反而会有警告提示。
    print(file + " over")
更新后出现的警告

FutureWarning: save is not part of the public API, usage can give unexpected results and will be removed in a future version

原因:

writer.save()接口已经私有化,close()里面有save()会自动调用,将writer.save()替换为writer.close()即可

更细致的操作:

可以添加更多的参数,比如:

dataframe.to_excel("文件.xlsx", index=False, header=None)

index=False,代表不会导出index,就是最左侧的那一列

header=None,代表不会导出第一行,也就是列头

读写文件注意

df.to_excel(writer, sheet_name='逐日流量', index=False)  # header = 0 不要最顶上一行

pandas生成日期去掉时分秒

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "date":pd.date_range("20100102",periods=6),
    "age":np.arange(6)})
print(df)

df["date"] = df["date"].dt.date  #将date列中的日期转换为没有时分秒的日期
df.to_excel("dates.xlsx")

向pandas中插入数据

如果想忽略行索引插入,又不想缺失数据与添加NaN值,建议使用 df['column_name'].values得出的是ndarray类型的值,后面的操作就不会限制于索引了

# waterlevel_data_trainx.values是一维数组
new_df['新列名'] = waterlevel_data_trainx.values

A value is trying to be set on a copy of a slice from a DataFrame.Try using .loc[row_indexer,col_indexer] = value instead

问题:当向列表中增加一列时,需要先将变量复制一份,再添加才可以

a=a.copy()
a['column01']= column

pandas添加索引列名称

baidu.index.name = "列名称"

pandas删除数据

drop()或者del()drop()可以不会对原数据产生影响(可以调);del()会删除原始数据

drop()

一次删除多行或多列,比较灵活

DataFrame.drop(labels,axis=0,level=None,inplace=False,errors=’raise’)

删除特定的多列

# Import pandas package
import pandas as pd
  
# create a dictionary with five fields each
data = {
    'A': ['A1', 'A2', 'A3', 'A4', 'A5'],
    'B': ['B1', 'B2', 'B3', 'B4', 'B5'],
    'C': ['C1', 'C2', 'C3', 'C4', 'C5'],
    'D': ['D1', 'D2', 'D3', 'D4', 'D5'],
    'E': ['E1', 'E2', 'E3', 'E4', 'E5']}
  
# Convert the dictionary into DataFrame
df = pd.DataFrame(data)
  
# Remove two columns name is 'C' and 'D'
df.drop(['C', 'D'], axis=1)
  
# df.drop(columns =['C', 'D'])

根据列索引删除列
# Import pandas package
import pandas as pd
  
# create a dictionary with five fields each
data = {
    'A': ['A1', 'A2', 'A3', 'A4', 'A5'],
    'B': ['B1', 'B2', 'B3', 'B4', 'B5'],
    'C': ['C1', 'C2', 'C3', 'C4', 'C5'],
    'D': ['D1', 'D2', 'D3', 'D4', 'D5'],
    'E': ['E1', 'E2', 'E3', 'E4', 'E5']}
  python
# Convert the dictionary into DataFrame
df = pd.DataFrame(data)
  
# Remove three columns as index base
df.drop(df.columns[[0, 4, 2]], axis=1, inplace=True)  # 删除0 2 4三列
  
df

del()

一次只能删除一列

read_excel()

data = pd.read_excel(r"Result_Model.xlsx", sheet_name="prediction", engine='openpyxl', skiprows=1)  # 先用都昌运行前的数据测试一下,跳过第一行

也可以设置成跳过多行,跳过其他行等

参考博客

标签:index,df,Series,DataFrame,pd,pandas
From: https://blog.51cto.com/yezhoubing/8326029

相关文章

  • Pandas模块
    1Pandas基础1.1数据结构1.1.1Series一维#创建#1.列表创建>>>pd.Series(['a','b','c','d'])0a1b2c3ddtype:object#2.设置索引index>>>pd.Series(['a','b','c',......
  • Pandas入门
    安装库pipinstallpandas#读取.xlspipinstallxlrd#读取.xlsxpipinstallopenpyxl案例1importpandasaspdpath=r"C:\work\test.xlsx"data=pd.read_excel(path)print(data)读取.csv文件importpandasaspddata=pd.read_csv(r"C:\\work......
  • pandas 筛选 可以用 列表解析式
    list_dir=os.listdir(addr)df_dir=pd.DataFrame(os.path.splitext(i)foriinlist_dir)display(df_dir)today=datetime.date.today().strftime('%m月%d日')#筛选第1列包含today的行display(pd.DataFrame(iforiindf_dir.valuesiftodayini[0]))display......
  • 深度学习:数据预处理(pandas)
    pandas是为数据分析而设计的,因此有两个功能:数据预处理、数据统计。然而,在AI领域中只需要pandas的数据预处理功能。文件相关目录创建importosdst=os.path.join("..","data")os.makedirs(dst,exist_ok=True,mode=0o777)#0o是8进制写入文本withopen("test.csv","w")asf:......
  • pandas样式 设置
    pd.set_option('expand_frame_repr',False)#True换行显示,False不允许换行pd.set_option("display.max_columns",None)#dataFrame的列,None显示完整的列,数字表示显示最大列数pd.set_option('display.max_rows',None)#None显示完整的行,数字表示显示最大......
  • Python 利用pandas和matplotlib绘制双柱状图
    在数据分析和可视化中,常用的一种图形类型是柱状图。柱状图能够清晰地展示不同分类变量的数值,并支持多组数据进行对比。本篇文章将介绍如何使用Python绘制双柱状图。准备工作在开始绘制柱状图之前,需要先安装matplotlib和pandas这两个Python库。可以通过pip安装:pipinstallmatp......
  • # yyds干货盘点 # pandas如何将下图这个数据格式,改为%Y-%m-%d这种格式的?
    大家好,我是皮皮。一、前言前几天在Python白银交流群【小王子】问了一个Python日期处理的问题,一起来看看吧。原始数据库中的数据如下所示:二、实现过程这里【袁学东】给了一个方法,代码如下所示:df['日期']=pd.to_datetime(df['日期']).datetime.strftime(‘%Y%m-%d’)顺利地解决了问......
  • pandas如何将下图这个数据格式,改为%Y-%m-%d这种格式的?
    大家好,我是皮皮。一、前言前几天在Python白银交流群【小王子】问了一个Python日期处理的问题,一起来看看吧。原始数据库中的数据如下所示:二、实现过程这里【袁学东】给了一个方法,代码如下所示:df['日期'] = pd.to_datetime(df['日期']).datetime.strftime(‘%Y%m-%d’)......
  • Python模块之 pandas
    模块作用简介:1、PythonDataAnalysisLibrary或pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会......
  • 2.python-pandas-axis的理解
    参考:python数据分析-如何理解pandas中的axis?-知乎](https://zhuanlan.zhihu.com/p/444973350)1.对Seriesaxis只有一个,默认为axis=02.对DataFrameaxis有俩,axis=1和axis=0.axis=1:'columns',表示将行固定,对每一行按列遍历。axis=0:'index',表示将列固定,对每......