pandas之df使用指南

pandas之df使用指南

读写、创建dataframe、基础信息获取

-读写

import pandas as pd
#读取
day_type = pd.read_excel("./DataFile/2019工作日.xlsx",sheet_name=0, header=0, names=None, index_col=None, usecols=None)

sheet_name:返回指定的sheet
如果将sheet_name指定为None,则返回全表
如果需要返回多个表, 可以将sheet_name指定为一个列表, 例如[‘sheet1’, ‘sheet2’]可以根据sheet的名字字符串或索引来值指定所要选取的sheet
name:如果没有表头, 可用此参数传入列表做表头
header:指定数据表的表头,默认值为0, 即将第一行作为表头
index_col:用作行索引的列编号或者列名,如果给定一个序列则有多个行索引。一般可以设定index_col=False指的是pandas不适用第一列作为行索引。
usecols:读取指定的列, 也可以通过名字或索引值

#写入
day_type.to_excel("./DataFile/DayData.xlsx",index=False)

index:默认为True, 是否加行索引
header:默认为True, 是否加列标

-创建一个dataframe:

df = pd.DataFrame({'A':[100, 200, 300, 400, 500], 
             'B':['a', 'b', 'c', 'd', 'e'],
             'C':[1, 2, 3, 4, 5]})
df
>>      A    B    C
 0    100    a    1
 1    200    b    2
 2    300    c    3
 3    400    d    4
 4    500    e    5  

-基础信息获取

print(len(df.index.values))#  行数 (不包含表头,且以下均如此) 
print(df.index.values)# 行索引
print(len(df.columns.values))#  列数
print(df.columns.values)#  列索引

data1 = df.head(7)   # 读取前7行的所有数据,dataFrame结构
data2 = df.values    #list形式,读取表格所有数据
print("获取到所有的值:\n{0}".format(data1)) #格式化输出
print("获取到所有的值:\n{0}".format(data2)) #格式化输出
修改、增加、删除、筛选

-修改

df.loc[1] = 111#将第二行全部换为111
#loc后一个方括号代表一个维度([0][1]代表第一行第二列),
#或是一个方括号里前面是行数后面是列名([2,“C”]代表第三行的“C”列

df.iloc[1:10,2] = 111#将第二行到第十行的第二列改为111
#iloc精准定位,只接受数字

-增加
1.增加行

df.loc[7] = 777#增加index为7的行,其值都是777
#有行索引时可以用loc[索引]来增加行
#若是想改变插入行的位置,可以新增一列用来排序的列:
df["order"] = [1, 3, 4, 5, 6, 2] #将新插入的行赋值2
df1=df.sort_values(by='order') #根据order列排序
df1.reset_index() #重置索引
#最后删掉order列
df=df.drop(columns='order')#或者写为:df.drop(columns='order',inplace=True)
#或者del df['order']

2.增加列

df.insert(0,'zero',[10,11,12,13,14,15])
#df.insert(添加列位置索引序号,添加列名,数值)
#或者是df['zero'] = [10,11,12,13,14,15]

-删除

#行
df.drop(index=2,inplace=True)
#index可为行的索引名
#列
df.drop(columns = 'B', inplace = True)

-筛选
loc无法用于条件筛选,而iloc和列名是可以的。

df.iloc[2,][df.iloc[2,]>1] #找出第三行中大于1的值,需注意保持数据类型一致
df[(df["C"]>1)&(df["C"]<4)] #找到C列中的值大于1且小于4的dataframe,需注意或为|,且为&

-通过筛选来定位赋值

df2.iloc[:,2][df2.iloc[:,0]==d] = df_temp.iloc[:,-2][(df_temp["日期"] == d)&(df_temp.iloc[:,-2] > 0.01)].mean()
#目前唯一可以成功赋值的方法,但是依旧会有warning
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值