Pandas库实操心得

pandas库简介

1.Pandas时Python的一个数据分析包,该工具为解决数据分析任务而创建
2.Pandas纳入大量库和标准数据模型,提供高效的操作数据集所需的工具。
3.Pandas提供大量能使我们快速便捷地处理数据的函数和方法。
4.Pandas是字典形式,基于NumPy创建,让NumPy为中心的应用变得更加简单。

Dataframe创建操作

date = pd.date_range('20190903', periods=6)#创造时间序列
columns_name = range(5)#range创造步长为一的数字序列
Dataframe = pd.DataFrame(np.random.randn(6, 5), index=date, columns=columns_name)# print(np.arange(6).reshape(2,3))#arange是numpy里面带的产生默认步长为1的列表
# reshape是将一个行向量变成一个NxM的矩阵# df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])

Dataframe的属性操作

# print(Dataframe.index)#获得Dataframe的index
# print(Dataframe.columns)#获得Dataframe的列lable
# print(Dataframe.dtypes)#查看每一列的类型
# print(Dataframe.describe())#数字总结
# print(Dataframe.T)#转置
# print(Dataframe.values)#用二维元组得到Dataframe的body
# print(Dataframe.sort_values(by=3,ascending=Ture))#按选定行进行排序
values默认是从小到大进行排序,如果想获得值前五的数据可以[-5:]
ascending为Ture时从小到大,False时从大到小

Dataframe对行和列的操作

# Author:Frank
import pandas as pddf = pd.read_excel(r'E:\2017B_data\2017\B\附件一:已结束项目任务数据.xls', index_col=0)
#print(df)
print(df.loc['A0001','任务gps 纬度']) # 根据行的index和列的label来切片# 还可以进行多列切片 print(df.loc['A0001',['任务gps 纬度','任务gps经度']]
print(df.iloc[0,0]) # 根据行列的position来进行切片# 还可以进行多列切片 print(df.iloc[0,[0,1]]
print('------->')print(df.loc['A0001':'A0003','任务gps 纬度':'任务gps经度'])#按照什么切片与上同,可以一次性切很多片
print('------->')
print(df.iloc[0:2,0:1])#按照什么切片与上同,可以一次性切很多片
print('------->')print(df.at['A0001','任务gps经度'])#at只能单切片 它的功能完全可以由loc替代
print(df.iat[0,1])#功能与at相同 不过是通过position进行切片
print('------->')print(list(df.index))#获得index的列表
print(df.columns)
# print(Dataframe[Dataframe[3]>0])#条件筛选打印
#ix 这种混合剪切已经被弃用
#.loc .ioc 只加第一个参数如.loc([1,2]),.iloc([2:3]),则进行的是行选择
# df[]只能进行行操作
# print(Dataframe['20190906':'20190909'])#按行进行索引,用名称进行切片的时候左显右不显,单切片的时候可以两边一样
# frame["b"].value_counts(sort=True)#默认返回排好序的Series,计算Series各个值中出现的频率

Dataframe对Nan数据的操作

# print(Dataframe.fillna(value=2))  #将nan的地方用value去替换
# print(Dataframe.dropna(axis=0,how='any'))#0对行操作,1对列操作,any存在就删掉,all表示当全部是nan时删掉、
#print (pd.isnull(Dataframe))#输出一个布尔矩阵,nan的地方为Ture非nan地方为False

Dataframe的合并操作

# df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
# df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
# df3 = pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])
# res = pd.concat([df1,df2,df3],axis=1,ignore_index=False)#合并Dataframe类型的数据,axis为0按行合并,1按列合并,ignore_index为Ture就重置合并后的行或列索引
# res = df1.append(df2,ignore_index = True)#append和concat类似但是append只能行合并
# print(res)
# left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
#                              'key2': ['K0', 'K1', 'K0', 'K1'],
#                              'A': ['A0', 'A1', 'A2', 'A3'],
#                              'B': ['B0', 'B1', 'B2', 'B3']})
# right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
#                               'key2': ['K0', 'K0', 'K0', 'K0'],
#                               'C': ['C0', 'C1', 'C2', 'C3'],
#                               'D': ['D0', 'D1', 'D2', 'D3']})
# res = pd.merge(left,right,on=['key1','key2'],how='inner')#on表示以什么关键字去合并,how inner(内联合并)/outer(外联合并)/left/right 表通过什么样的方式合并
# #当使用outer合并时
# res = pd.merge(left,right,on=['key1','key2'],how='outer',indicator='名称')#indicator的作用是显示数据合并的方式
#下面介绍行合并
# res = pd.merge(left,right,left_index=True,right_index=True,how='inner',indicator=True)#还有outer
# print(res)

在后来的实操中感觉常用的操作

快速从Excel导入数据写成Dataframe:

pd.read_excel(io= , sheetname=0/'sheet1'/[0,1] ,header=None,names=[],skiprows=2,index_col=1)
#io是路径
#sheetname选定exce表的sheet,可是整数0或1,也可以在选定多个表的时候用列表如[0,1,4],当然也可以用名字进行索引
#header的默认值为0,表示用第一行作为列标题;当没有列标题的时候用header = False
#names选定一个列表作为列标题
#skiprows是从上至下删除几行
#index_col选定某行作为Dataframe的index

Dataframe写入excel

to_excel(self, excel_writer, sheet_name='Sheet1', na_rep='', float_format=None,columns=None, header=True, index=True, index_label=None,startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None)
# excel_writer : 目标路径
# sheet_name : 填充excel的第几页 
# na_rep:缺失值填充
# colums参数:选择输出的的列
data.to_excel(basestation_end,columns=["ID"])
# header 参数:默认为True,可以用list命名列的名字。header = False 则不输出题头。
# data.to_excel(basestation_end,header=["a","b","c","d"])
# index : 默认为True,显示index,当index=False 则不显示行索引(名字)。 
# index_label : string or sequence, default None 
data.to_excel(basestation_end,index_label=["f"])
输出:
f   ID  NUM-1   NUM-2   NUM-3
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 

Dataframe快速添加一列

在这里插入图片描述

Dataframe的加减法

add(series,axis=0)#默认按行(0)
sub()#减法
mul()#乘法
div()#除法

要注意的是他们都是接收的series,而用.iloc或者.loc得到的都是Dataframe,用df[’’]得到的是series

series和Dataframe都可以加减乘除一个实数


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部