pandas 初级学习

数据结构

Series

一维数组 与 numpy的array 以及 list相似 Series 可以保存不同类型的数据

DataFrame

理解成Seires的一种容器

series的初始化

s= pd.series([1,2,3,np.nan,4,5],index=[a,b,c,d,e,f])
返回左侧为下标 一般为数字,可以额外指定 但是数据类型必须统一

索引-数据的行标签

pd的索引下标就是行标签
s.index 返回索引信息
s.values 返回值
s[0] 返回第一个值

切片

s[2:5]

索引赋值

s.index.name=“索引” 让索引列headerview为: 索引
s.index=list(‘abcdef’) 相当于 s=pd.series([1,2,3,np.nan,4,5],index=[a,b,c,d,e,f])
使用字母切片的时候 是闭区间

Pandas 的 DataFrame

创建 DataFrame

方法一 通过二维数组的方式

DataFrame 是个二维数组
df=pd.DataFrame(np.random.randn(6,4)
生成一个6行4列的二维数组

        0        	1       	2       	3
0	-1.004211	0.228841	0.494869	-1.019319
1	-0.833322	-1.333550	0.113505	1.963115
2	-0.703133	0.732903	0.146812	-0.066615
3	1.185536	0.352014	0.960584	-1.706782
4	0.290114	-0.076001	0.241904	-0.593647
5	-1.047212	2.111794	-0.065611	0.988204

通过index 来指定行索引 通过columns 来指定列索引的名称

df =pd.DataFrame( np.random.randn(6,4),index=date,columns=list(‘abcd’))

             	a       	b       	c       	d
2019-01-01	0.258845	-1.756340	-0.338932	-0.543527
2019-01-02	1.621580	0.183436	0.258314	1.313766
2019-01-03	-0.973349	-1.334124	-0.638793	0.452062
2019-01-04	0.663128	0.452959	1.166851	-0.737856
2019-01-05	0.568413	-0.289317	-1.577237	-0.171491
2019-01-06	1.575756	-0.978803	0.728931	-0.460711

方法二 通过字典方式创建

df2=pd.DataFrame({‘A’:1.,‘B’:pd.Timestamp(‘20190101’),‘C’:pd.Series(1,index=(range(4)),dtype=float),‘D’:np.array([3]*4,dtype=int),‘E’:pd.Categorical([“test”,“train”,“test”,“train”]),‘F’:‘abc’})

类别是不限制的 但是每列的数据必须是一样的 每列之间可以不同

字典里面的key代表索引列 value 是可以能够转化为Series的对象

    A   	B        C  D	 E	     F
0	1.0	2019-01-01	1.0	3	test	abc
1	1.0	2019-01-01	1.0	3	train	abc
2	1.0	2019-01-01	1.0	3	test	abc
3	1.0	2019-01-01	1.0	3	train	abc

查看数据

head 与 tail

df.head(10) 如果不填写则默认前五行
df.tail(3) 显示后3行
df.dtypes 显示每列的数据类型

查看下标

df.index 显示每行的索引
df.columns 显示每列的索引名称
df.values 显示数据

读取数据及数据操作

读入excle 或者csv

df=pd.read_excel(‘kkkkk’) 'kkkkk’是本目录下文件或者文件的绝对路径\

pd.read_excel 详细了解一下。比如多个SHEET如何选中其中一个,还有选择某个区域导入。。等等

csdn链接

行操作 iloc

df.iloc[0] 显示第一行的信息
df.iloc[0:5] 左闭右开的取件
df.loc[0:5] 闭区间

添加一行

先构造字典数据
dit=dit={'名字':"复仇者联盟",'投票人数':"123456","类型":"剧情/犯罪","产地":"美国","上映时间":"1994-09-10 00:00:00","时长":190,"年代":2018,"评分":8.0,"首映地点":"美国"}
s=pd.Series(dit)
s.name=38738

df=df.append(s)

删除一行

df=df.drop([series.name])

列操作

列名称

df.columns

查看某列的信息

df[‘名字’][:5] 查看 名字 列 前5行的数据
df[[‘名字’,‘类型’]] 查看多列的数据

增加一列

df[‘序号’]=range(1,len(df)+1)

删除一列

df.drop(“序号”,axis=1) 因为不是drop行 要写明白 列名“序号” , axis=0 是行 axis=1 为列

通过标签选择数据

df.loc[1,‘名字’] 返回 第二行 名字列的数据
df.loc[[行标签],[列标签]]

条件选择

df[“产地”] == “美国” 得到df中产地是美国的一个 bool series
再根据bool数据进行选择
df[df[‘产地’]==“美国”] 筛选出符合条件的数据
df[df[‘产地’]==“美国”][:5]选出前五行\

df[(con_1)&(con_2)] 两个条件 & and 的关系
df[(df.产地==“美国”) & (df.评分>()]
df[((con_1)|(com_2))&(con_3)]

缺失值与异常值的处理

缺失值处理方法

方法 说明
dropna
fillna
isnull
notnull\

方法 说明
dropna 根据标签中的缺失值进行过滤,删除缺失值
fillna 对缺失值进行填充
isnull 返回一个布尔值对象,判断哪些值是缺失值
notnull isnull的否定式

判断缺失值

df.isnull()
df[‘columns_name’].isnull() 判断某列缺失值 返回 bool值
df[df[‘columns_name’].isnull()] 返回 缺失值的dataframe

填充缺失值

df[‘评分’].fillna(0,inplace=True) 用 数字 0 填充评分列缺失值,并且直接替换原数据、
df1=df.fillna(“未知数据”) 会将所有控制都填充为 “未知数据” 谨慎使用。

删除缺失值

df.dropna()
参数: how=“all” 删除全未控制的行或者列
inplace=True 覆盖之前的数据 df 会变成删除掉缺失值之后的数组
axis=0 选择行或者列\

处理异常值

一般异常值都很少,在不影响数据整体份的情况下,直接删除就好了

df=df[df.投票人数>0] 直接筛选出合理数值

数据保存

完成数据处理之后,我们将数据保存到Excel中
df.to_excel(“filename”) filename 未绝对或者相对路径 是数据保存的位置

猜你喜欢

转载自blog.csdn.net/weixin_41785923/article/details/87913206