pandas series取值_数据分析pandas的简单操作
为什么要用pandas呢?
numpy能够帮我们处理数值的数据,pandas除了处理数值以外还可以处理字符串,时间序列等数据类型;
正常我们还是主要用pandas来读取数据;以下是读取不同类型的文件:
pd.read_csv()
pd.read_excel()
pd.read_html()
pd.read_hdf()
读取数据后,我们说一下pd对数据的一些处理;
1.pandas的常用数据类型
series 一维,带标签的数组;
dataframe 二维,seiries的容器;
2.series
我们用一个字典来作为series创建data对象的内容;字典的键就作为series的索引了;
import pandas as pd
import string
dic={string.ascii_uppercase[i]:i for i in range(1,10)}#创建一个字典字母对应数字
data=pd.Series(dic)
print(data.shape)
查看一下data的维度:
(9,)
series的切片和索引:和序列的切片和索引相同;
print(data[[0,1,2,3]])
print(data[2:3])#切片
print(data[data<3])#布尔索引
结果:dtype就是数据的类型了;
B 1
C 2
D 3
E 4
dtype: int64
D 3
dtype: int64
B 1
C 2
dtype: int64
对于陌生的series对象
我们可以用index和values来查看他的索引和标签:
data.index
data.values
结果:
Index(['B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], dtype='object')
[1 2 3 4 5 6 7 8 9]
查看一下series索引和标签的类型
<class 'pandas.core.indexes.base.Index'>
<class 'numpy.ndarray'>
可以看到标签是一个numpy的ndarray类型,其实series可以看作由两个数组构成,可以对他们进行数组的一些操作;
3.Dataframe的基本属性:
dataframe对象既有行索引,又有列索引;
行索引:表示不同行;横向索引(index),0轴,aixs=0
列索引:表示不同列;纵向索引(column),1轴,axis=1
创建一个dataframe对象(用二维数组):创建时注意必须以二维数组作为输入,否则会报错;
data=pd.DataFrame(np.arange(1,21).reshape(4,5),index=list(range(2,6)),columns=['B','C','D','E','F'])
print(data.shape)
print(data)
结果:这里index=和columns=是对索引的自定义;
(4, 5)
B C D E F
2 1 2 3 4 5
3 6 7 8 9 10
4 11 12 13 14 15
5 16 17 18 19 20
4.pandas的iloc和loc(这里主要说对dataframe的操作)
对于dataframe的数据我们不能用data[index,column]的形式来取值或者去修改了,如果这么做,pandas会自动加上一个新的索引名为[index,column],可以自己试一下!
对于dataframe形式的数据就要通过loc和iloc两种方法来用索引操作数据;
df.loc 通过标签索引行数据
df.iloc 通过位置获取行数据
data=pd.DataFrame(np.arange(1,21).reshape(4,5),index=[1,2,3,4],columns=['A','B','C','D','E'])
print(data.iloc[1:3,2:3])
print(data.loc[1:3,'B':'D'])#按照我指定的字母标签
print(data.iloc[1,3])#取第二行第四列
结果:
C
2 8
3 13
B C D
1 2 3 4
2 7 8 9
3 12 13 14
9
5.pandas对缺失值的处理:
pandas和numpy对缺失值的标志都是“NaN”:np.nan
判断数据是否为NaN:
print(pd.isnull(data))
print(pd.notnull(data))
对于没有任何一个元素是空的data,我们将得到如下的结果
A B C D E
1 False False False False False
2 False False False False False
3 False False False False False
4 False False False False False
A B C D E
1 True True True True True
2 True True True True True
3 True True True True True
4 True True True True True
对于缺失值的处理方式:(1)删除其所在的行或列(dropna)
(2) 用数据来填充空数据 (fillna)
删除所在行(列):
data=pd.DataFrame(np.arange(1,21).reshape(4,5),index=[1,2,3,4],columns=['A','B','C','D','E'])
data.iloc[1,3]=np.nan;#将该元素赋空值
print(data.dropna(axis=0,how='any',inplace=False))
结果:我们可以看到缺失值所在行被删除(参数axis=0,即0轴数据被删除)
A B C D E
1 1 2 3 4.0 5
3 11 12 13 14.0 15
4 16 17 18 19.0 20
填充缺失值:这里我们例子用平均值来填充
print(data.fillna(data.mean()))#mean时求数据的平均值
结果
A B C D E
1 1 2 3 4.000000 5
2 6 7 8 12.333333 10
3 11 12 13 14.000000 15
4 16 17 18 19.000000 20
6.pandas常用的统计方法:
mean 求数据平均值
join 合并数据
merge 合并数据
groupby 分组和聚合
这个博客园的Mr-chen写的join和merge的区别用法;
pandas.merge和DataFrame.join的用法区别 - Mr-chen - 博客园www.cnblogs.com
7.pandas的一些字符串方法