写博客的源动力是吐槽(bushi),开始自己给自己挖坑了,强迫自己学习,主要也是还债···,我总觉得看完就过了,但这玩意儿吧跟数学题一样的,不做题你就体会不到精髓。脑子:我会了!手:???什么来着?真实·菜得抠jio,不说了进入正题。
首先,简单介绍下pandas,pandas是一个基于numpy的一种工具,主要用于数据分析,是非常好用的一个工具,可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。pandas的数据格式主要有两种,分别为一维数组Series和二维数组Dataframe。
1、SeriesSeries能够保存任何类型的数据(包括int,str,float以及python对象),轴标签是其索引。pandas以两列显示Series,索引在左列中左对齐,值在右列中右对齐,在列出Series元素之后,还显示底层array元素的数据类型(dtype)。
1.1、创建带自定义索引的Series:
import pandas as pd album = pd.Series(['平凡的一天','小王日记','幼鸟指南'],index=['专辑一','专辑二','专辑三']) album
1.2、若使用字典初始化Series,则字典的键会成为Series的索引,值会成为Series的元素:
import pandas as pd album = pd.Series({'专辑一':'平凡的一天','专辑二':'小王日记','专辑三':'幼鸟指南'}) album
二者输出结果相同:
专辑一 平凡的一天 专辑二 小王日记 专辑三 幼鸟指南 dtype: object
可以通过索引来访问Series中的元素:
album[0]
album['专辑一']
'平凡的一天'
还有一些Series的用法我写在注释中:
album.count() #计算Series中的元素个数 album.mean() #计算Series的均值(只对数值起作用) album.min() #计算Series的最小值 album.max() #计算Series的最大值 album.std() #计算Series的标准偏差(只对数值起作用) album.value #返回底层array2、Dataframe
Dataframe是增强的二维数组,其每一列都是一个Series,每个列的Series可能包含不同的元素类型,数据以行和列的表格方式排列。
2.1、从字典中创建一个Dataframe:
import pandas as pd album_dict = {'平凡的一天':['平凡的一天','给你给我','一荤一素'],'小王日记':['水乡','小王','呓语'],'幼鸟指南':['城市傍晚','海上日记','幼鸟指南']} album = pd.Dataframe(album_dict) album
结果:
使用index属性自定义Dataframe的索引,可将连续整数更改为标签,在指定索引时,必须提供元素数等于Dataframe中行数的一维集合,否则会引发ValueError:
album.index = ['song1','song2','song3'] album
2.2、以列表形式创建一个Dataframe(结果同上),columns代表的是每一列的名字:
import pandas as pd album_list = [['平凡的一天','水乡','城市傍晚'],['给你给我','小王','海上日记'],['一荤一素','呓语','幼鸟指南']] album = pd.Dataframe(album_list,columns=['平凡的一天','小王日记','幼鸟指南']) album
访问Dataframe的列可以通过按名称获取,所在的列会显示为一个Series,如果Dataframe的列名是有效的python标识符,则可以用作属性,用属性得到Series:
album['平凡的一天']
0 平凡的一天 1 给你给我 2 一荤一素 Name: 平凡的一天, dtype: object
2.3、loc与iloc
说到loc和iloc我真的就···靓仔无语(反正因为二者的用法问题,心理阴影面积Σ都求不出来)
loc属性是通过标签访问行,注意是作用于标签嗷,访问方式为先行后列,只访问单行元素,显示的是Series:
album.loc['song1']
平凡的一天 平凡的一天 小王日记 水乡 幼鸟指南 城市傍晚 Name: song1, dtype: object
访问多行元素,显示的就是Dataframe:
album.loc[:,['小王日记','幼鸟指南']]
iloc按按位置选择数据,即第n行,第n列数据,只接受整型参数,只访问单行元素,显示的是Series(结果同loc访问单行元素):
album.iloc[0]
访问多行元素,显示的就是Dataframe:
album.iloc[0:2]
album.iloc[[0,2],0:3]
这段代码的意思是利用iloc取出前三列的第一行和第三行的元素。
album.loc['song1':'song2',['平凡的一天','小王日记']]
这段代码的意思是,取出名为song1和song2的行,并从列名平凡的一天和小王日记中取所需要的值。
暂时先到这吧,后续会继续更新的,毕竟也算是强制自己学习回顾了嘛,就这样咯。