以下代码都是通过jupyter notebook 写的 在pycharm里也同样可以运行,
把想得到的结果print()就可以了,例:s=pd.Series([4,-7,3,9]) print(s)
但是numpy和pandas模块需要下载,下载好就可以用了
Serise
pandas.Series()返回一个有index和values属性的数据对象
import pandas as pd#导入pandas模块
import numpy as np
from pandas import Series,DataFrame
#例:
s=pd.Series([4,-7,3,9])
s
#结果:索引,值
# 0 4
# 1, -7
# 2, 3
# 3, 9
#他们返回的是int类型
s1=Series([4,7,6,5],index=['a','b','c','d'],dtype=float)
s1
#结果:索引,值
# a 4.0
# b 7.0
# c 6.0
# d 5.0
# dtype: float64
#可以自定义索引,但索引长度与值长度必须一致,否则会报错,默认类型为64位,可以更改为float32,把dtype改成np.float32
读取Series
1,使用0-n的索引
2,自定义索引
#数字索引读取
#在中括号里输入下标即可
s1[0]
#结果:4.0
#自定义索引读取
s1['a']
#结果:4.0
#如果自定义索引是纯数字,就不能用0-n的索引读取了,只能用自定义
s2=Series([4,7,6,5],index=[4,5,6,7],dtype=np.float64)
s2
#结果:索引,值
# 4 4.0
# 5 7.0
# 6 6.0
# 7 5.0
# dtype: float64
Sereis.loc[‘自定义索引’] || Sereis.iloc[0-n的数字]
s2.loc[6]
#结果:6.0
s2.iloc[2]
#结果:6.0
#有则改之无则加进去 xxx.loc['yy']=new
s1.loc['e']=8
s1
#结果:索引,值
# a 4.0
# b 7.0
# c 6.0
# d 5.0
# e 8.0
# dtype: float64
读取多个值 会得到新的对象
s1
#结果:索引,值
# a 4.0
# b 7.0
# c 6.0
# d 5.0
# e 8.0
# dtype: float64
#单点读取
s1[['a','c']]
#结果: 索引,值
# a 4.0
# c 6.0
# dtype: float64
#区间读取 Series[start,end,step]
s1['a':'c']
#结果: 索引,值
# a 4.0
# b 7.0
# c 6.0
# dtype: float64
#读取 a c e
s1[::2]
#结果: 索引,值
# a 4.0
# c 6.0
# e 8.0
s1['a':'e':2]
#结果: 索引,值
# a 4.0
# c 6.0
# e 8.0
通过字典数据的到Series
key变成索引,value变成值
build_price={'beijing':68000,'shanghai':54000,'guangzhou':35000,'shenzhen':72000}
s3=Series(build_price)
s3
#结果: 索引, 值
# beijing 68000
# shanghai 54000
# guangzhou 35000
# shenzhen 72000
# dtype: int64
# 给定index参数值,他会进行匹配,
index4=['beijing','guangzhou','shanghai','shenzhen']
s4=Series(build_price,index=index4)
s4
#结果: 索引, 值
# beijing 68000
# guangzhou 35000
# shanghai 54000
# shenzhen 72000
# dtype: int64
#匹配不上为NAN
index4=['beijing','guangzhou','shanghai','shenzheng','haerbin']
s4=Series(build_price,index=index4)
s4
#结果: 索引, 值
# beijing 68000.0
# guangzhou 35000.0
# shanghai 54000.0
# shenzheng NaN
# haerbin NaN
# dtype: float64
#当然,创建后再更改index也是可以的
s3.index=list('abcd')
s3
#结果: 索引,值
# a 68000
# b 54000
# c 35000
# d 72000
# dtype: int64
DataFrame表格型数据,就像excel有行有列
把numpy的2维数组转为DataFrame
#默认行索引与列索引都是0-n
#创建一个值是10到22的一个表格,行数和列数分别为3行4列
df = DataFrame( np.arange(10,22).reshape(3,4) )
df
#可以自定义索引
df1= DataFrame( np.arange(10,22).reshape(3,4),
index=list('abc'),
columns='one,two,three,four'.split(','))
df1
通过字典来创建DataFrame
df_dict={
'city':'北京,上海,广州,深圳,台北'.split(','),
'price':(6800,54000,35000,72000,50000),
'year':np.arange(2015,2020)
}
df2=DataFrame(df_dict)
df2
#查看列字段是什么
df2.columns
#我们可以更改列索引的顺序
DataFrame(df_dict,columns=['year','city','price'])
读取DataFrame
df['']读取列
df.列名称
df.loc[]读取行
#查看这个列的值
df2['city']
#也可以这么写
df2.city
新增加列
只能 df['columnName'] =值
不能 df.xxx=值
#新增一列
#但是值是一样的
df2['new1']=5
df2
#新增一列
#但是值不是一样的
df2['new2']=np.arange(5.)
df2
#列已经存在,则是修改
df2['new1']=100
df2
行增加 与修改
df.loc[]=xxx
#新增加一行,但是行值是一样的
df2.loc[6]=6
df2
#新增加一列,也可以是字符串
df2.loc['new']='行'
df2
#查看df2的最后一行
df2.iloc[-1]
#读取单一值 df.loc[行,列]
#取出2019
#直接读取
df2.loc[4,'year']
#间接读取
df2.year[4]
#间接读取
df2.loc[4].loc['year']
#修改
df2.loc[4,'year']=2020
当我们想增加新列 我们如果直接给数字或者是数组的时候 行索引是自动匹配的
但是如果我们给的数据已经有索引的Series。而Series是有索引的,那么就会进行 索引匹配,能匹配上则给值进去,不能则没有
#创建时给相同索引
spe_s2=Series(np.arange(7)*3,index=df2.index)
spe_s2
#直接复制values就不涉及到索引了
df2['new7']=spe_s2.values
df2
删除
del df[列名称] 删除列
删除df2字段名为new5列
del df2['new5']
#df.drop(key , axis=0 ,inplace=False) axis(控制删行删列)inplace是否在原数据修改
#key 具体的名称
df2.drop('new')
以上这些只是他们的用法,例题等
·