文章目录
- Pandas
- Series
- DataFrame
- 叮!
Pandas
pandas是python中用于处理数据的常用包,主要用于处理表格型或者异质型数据,其经常与numpy或者scipy等数值计算工具包一起使用。pandas常用的三种数据类型为logical(逻辑型)、Numeric(数值型)和Character(字符型)。最常用的两种数据结构为Series(系列)和DataFrame(数据框)。要使用pandas处理数据就一定得会使用这两种数据结构。同时不要将这两种数据结构分开,这两种结构相互联系,DataFrame实际上就是Series的容器或是Series的‘放大版’,DataFrame的一列就是一个Series。因此两者的方法很多都能共用。
Series
目的 | 方法 |
创建一个Series: | A=pd.Series([‘D’,‘B’,‘C’],index=[‘x’,‘y’,‘z’]) # 可依顺序传入index |
根据索引访问 | A[1]、A[‘y’] # 索引位置或者索引名皆可访问 |
追加元素 | A.append([‘A’]) # Series只能追加一个Series,因此先将要追加的元素转换为Series即可添加。 |
判断值的存在 | ‘p’ in A.values,还有isin,isnull或者notnull可以使用 |
切片 | A[0:2] # 包含尾部哦 |
找索引号对应的index名 | A.index[2] |
删除元素 | A.drop(1)、A.drop(‘y’)、A.drop(A.index[2]) # 索引位置或者索引名皆可 |
修改index | A.index = [‘a’,‘b’,‘c’] |
寻找某值存在的位置 | A.index(A.values==‘z’) |
唯一值 | A.unique() # 返回唯一值,即所有出现过的值,但只输出一次 |
DataFrame
目的 | 方法 |
创建DataFrame | df=pd.DataFrame({‘a’:[1,2,3],‘b’:[‘m’,‘n’,‘x’]},index=[‘s’,‘w’,‘e’]) # 由于是Series的容器,因此多个Series即可合并为DataFrame,字典也可以转为Series或者DataFrame(后面介绍的方法很多都是以这个DataFrame为例子的哈!)当然最常见的还是直接读入(如使用read_csv、read_table等等方式) |
访问列 | df[‘列名’],df.iloc[:,‘列的号码’],df.loc[:,‘列名’] # iloc使用排列的索引号进行访问,loc则使用索引名进行访问 |
访问行 | df[‘要访问的行号,如2’:‘要访问的行的下一行的行号,如3’],df.iloc[‘要访问的行号’,:],df.loc[‘要访问的行的索引名’] # 若通过第一种切片访问,不能直接只输入df[2],这样会报错 |
访问指定位置 | df.at[‘e’,‘a’] # 前面为行名,后面为列名,这是pandas的习惯,一般先解析行方向(axis=0)再解析列方向(axis=1) |
寻找某值存在的位置 | 使用np.where()进行寻找 |
修改列名 | df.columns=[‘第一列的新列名’,‘第二列的新列名’] 、df.rename(columns={‘某列的旧列名’:‘要改为的新列名’}) # 第一种方法传入的列名需要和之前的列的数量一样哦,要不然会报错!! |
修改index | df.index=[‘第一行的新行名’,‘第二行的新行名’,‘第三行的新行名’]、df.rename(index={‘某行的旧行名’:‘要改为的新行名’} # 大致同修改列名的方法哈,也可使用reindex方法 |
删除某行或某列 | df.drop(‘要删除的行名’,axis=0)、df.drop(‘要删除的列名’,axis=1) 、df.drop(columns=[要删除的列的列名列表])、del df[‘列名’] # 有的情况需要通过axis切换行列哦,默认为行(axis=0) |
增加列 | df[‘new’] = [2,5,8] # 依次填入列中每行需要的值 |
根据已有列增加新列 | 可以使用df[‘某列’]与df[‘某列’]的计算即可哦,加减乘除、还有各种apply函数等等都能使用。 |
增加行 | df.loc[‘新行要取的名字’] = [2,1] # 依次填入行中每列需要的值 |
合并DataFrame | df.append(df1) # append可以选择使用ignore_index为True或False保留原来的索引,此外还有pd.concat(轴向),pd.merge(选择left_on,right_on,how等参数进行行方向的合并) |
去重 | df.duplicated(‘选择的列名’)、df.drop_duplicates(‘选择的列名’) #前者查看重复,后者用于去重,使用keep参数选择保留某个重复值,如keep=first或keep=last等 |
处理缺失值 | df.dropna()、df.fillna(‘填入填充缺失值的值’) # 前者用于去除缺失值所在的行,后者用于填充缺失值,默认填充的值为0 |
排序 | df.sort_values([‘列名’]) # 选择某一列即Series作为排序依据,ascending可以选择升降序,df.rank也可排序,但只返回排名 |
将某列设为索引列 | df.set_index(‘列名’) |
撤销对index的修改 | df.reset_index() # 有是否删除之前的索引的选项,drop=True |
描述性统计 | df.count()、df.describe()、df.min、df.max、df.idxmin、df.idxmax、df.sum、df.mean、df.cumsum、df.median、df.quantile、df.percentile、df.argmax、df.argmin # 等等,都是数学上的描述统计,有需要再查吧! |
使用函数 | 将lambda函数使用apply或者map方法融入到对数据框的处理中 |
替换某个值 | df.replace() # 但是不是很好用,之前失败过 |
对索引排序 | df.sort_index() # 也可传入by=‘a’,效果同sort_values |
分组 | 使用DataFrame中的groupby方法进行分组操作,即可以使用数据框中的某一列作为分组依据来对数据进行分组。例:df.groupby(df[‘列名’])、df.cut(‘a’,bins,labes=’’) # bins为分组依据,a为要分组的列,label为对分组进行的命名 |
计算个数 | df[‘列名’].value_counts() # 用于计算Series中每个值出现的次数(唯一值的个数),对DataFrame可以使用apply方法来统计df.apply(pd.value_counts) |
inplace | 在使用很多操作时可以加入inplace=True表示在原数据框上处理,并非新建数据框 |
对某些记录提取 | df[条件] #t条件可以设置比较类,范围类,字符匹配或逻辑运算等 |
读取文件 | pd.read_csv()、pd.read_table()、pd.read_Excel()等 |
输出文件 | df.to_csv() # 可以选择使用index=False不输出索引列 |
广播机制 | df - df[‘a’] # DataFrame可以减去Series从而得到新DataFrame,且是每一行都会减 |
转置(换方向) | 即将DataFrame转置,直接使用df.T即可 |
遍历 | for index, row in df.iterrows(): # 不是很好用,但是有时候还是能用上哈,比如说提取某些列的值的时候。提取可使用row.values |
叮!
DataFrame和Series有很多方法,但是上面写的都是些比较常用的功能,或说是我比较常用吧,哈哈,有其它常用的再加!!!当然若是自己要使用的话,那自己也得探索一下嘛。