pandas的Series和DataFrame两种数据结构

Series和DataFrame的索引、添加、修改、删除数据操作:

代码:

import pandas as pd
import numpy as np
t=pd.Series(data=None,index=None,dtype=None,name=None,copy=False)
          # 输入的数据,索引值,    强制转换数据类型 名称      对data进行拷贝
# 以列表为数据创建Series
list1=[3,5,4,5,4]
print(type(list1))
# <class 'list'>
s1=pd.Series(list1)
print(s1)
# 0    3
# 1    5
# 2    4
# 3    5
# 4    4
# dtype: int64
# print(type(s1))
# # <class 'pandas.core.series.Series'>
#
# list2=np.arange(0,10,2)
# list3=np.linspace(0,10,5)
# s2=pd.Series(list2)
# s3=pd.Series(list3)
# print(s2)
# print(s3)

# index和values
print(s1.index)
print(list(s1.index))
print(s1.values)

# 字典
dict1={'a':1,'b':2,'c':3}
s3=pd.Series(dict1)
print(s3)

# 数值索引和标签索引
s=pd.Series(np.random.randn(10),index=['a','s','d','g','h','j','k','l','q','w'])
print(s)
print(s[1:5])
print(s['s':'h'])

s=pd.Series(np.random.randn(10),index=['a',2,3,4,5,6,7,8,9,10])
print(s['a':5])

s=pd.Series(np.random.rand(15))
print(s)

# 查看前5条数据和后5条数据
print(s.head())
print(s.tail())

s=pd.Series(np.random.rand(5),index=list('abcde'))
#reindex函数:重命名
s1=s.reindex(list('bc123'))
# print(s1)
# 填充0
s2=s.reindex(list('bc123'),fill_value=0)
print(s2)
print(s)
# 对其运算
print(s2+s)

#删除 原值不发生变化
s3=s.drop('a')
print(s)
s=s.drop('a')
print(s3,'\n',s)

#添加
s['f']=100
print(s)

# 列操作直接用 变量名[] 来操作
#DataFrame
data=[['yi',1,'one',10],['er',2,'two',20.0],['san',3,'three',30.0]]
s=pd.DataFrame(data,columns=['zhongwen','shuzi','yingwen','chengshi'])
print(s)

# #列表嵌套字典
data=[{'a':1,'b':2},{'a':5,'b':6,'c':7}]
s=pd.DataFrame(data,index=['first','second'])
# print(s)
#取多列的数据,注意不能使用切片操作
# print(s[['a','c']])
#字典嵌套列表 key值=columns
s['three']=pd.Series([10,20],index=['first','second'])
# print(s)
s['d']=s['a']+s['b']
# print(s)
#insert()插入数据
s.insert(0,column='r',value=[2,2])
print(s)
s.insert(0,column='q',value=s['a']+s['b'])
print(s)
s.insert(0,column='a',value=[1,1],allow_duplicates=True)
print(s)


# 删除操作
d={'one':pd.Series([1,2,3],index=['a','b','c']),
   'two':pd.Series([1,2,3,4],index=['a','b','c','d']),
   'three':pd.Series([10,20,30],index=['a','b','c'])
   }
df=pd.DataFrame(d)
print(df)
# del的方法删除
del df['one']
print(df)
# pop的方法删除
df1=df.pop('two')
print(df)
print(df1)

# 行操作 需借助loc[]属性来完成
d={'one':pd.Series([1,2,3],index=['a','b','c']),
   'two':pd.Series([1,2,3,4],index=['a','b','c','d']),
   'three':pd.Series([10,20,30],index=['a','b','c'])
   }
df=pd.DataFrame(d)
print(df)
print(df.loc['a'])#取出a行的数据 原df不变
print(df)

print(df.loc['a']['one'])#取出指定的数据

# 切片操作
print(df.loc['a':'b',['one']])
print(df.loc[['a','b'],['one','three']])

# numpy
s=np.arange(12).reshape((3,4))
print(s)
print(s[[0,2],[0,3]])

# 数值型索引和切片
print(df.iloc[2])#2行的数据
print(df.iloc[[0,2]])#0行和2行的数据
print(df.iloc[0,2])#0行2列的数据
print(df.iloc[0:2])

# 增加数据行使用_append()函数
# 追加字典
e={'one':100,'two':200}
# df3=df._append(e,ignore_index=True)
# print(df3)
s=pd.Series(e,name='e')
print(s)
df3=df._append(s)
print(df3)


# 追加列表**
#1、追加二维数组
d={'one':pd.Series([1,2,3],index=['a','b','c']),
   'two':pd.Series([1,2,3,4],index=['a','b','c','d']),
   'three':pd.Series([10,20,30],index=['a','b','c'])
   }
df=pd.DataFrame(d)
print(df)
list1=[[4,5,6],[7,8,9]]
df1=pd.DataFrame(list1,columns=['one','two','three'])
print(df1)
df2=df._append(df1,ignore_index=True)
print(df2)

#2、追加一、三维数组
d={'one':pd.Series([1,2,3],index=['a','b','c']),
   'two':pd.Series([1,2,3,4],index=['a','b','c','d']),
   'three':pd.Series([10,20,30],index=['a','b','c'])
   }
df=pd.DataFrame(d)
list2=[7,8,9]
df1=df._append(list2)
print(df1)
list3=[[[7,8,9]]]
df2=df1._append(list3)
print(df2)


# 删除数据行drop()原数据不会变化
d={'one':pd.Series([1,2,3],index=['a','b','c']),
   'two':pd.Series([1,2,3,4],index=['a','b','c','d']),
   'three':pd.Series([10,20,30],index=['a','b','c'])
   }
df=pd.DataFrame(d)
print(df)
df=df.drop('a')
print(df)
df=df.drop('b')
df=df.drop('c')
df=df.drop('d')
print(df)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值