pandas入门笔记
来源:互联网 发布:diy装修房子软件 编辑:程序博客网 时间:2024/06/15 02:21
pandas备忘录,速查指南
import pandas as pdimport numpy as np
创建测试对象
df=pd.DataFrame(np.random.rand(8,5))#创建一个DataFramedf
s=pd.Series([1,2,3,4,5,4,3,3])#创建一个Seriess
0 1 1 2 2 3 3 4 4 5 5 4 6 3 7 3 dtype: int64df.index=pd.date_range('2017/7/7',periods=df.shape[0])#修改默认行索引,以日期为索引df
浏览、检查数据
df.head(4)#查看前四行
df.tail(4)#查看后四行
df.shape#查看行数和列数
(8, 5)df.info()#显示行索引,数据类型,列数,存储等信息
df.describe()#显示统计信息,有个数,均值,标准差,最大最小值,中位数,四分之一和四分之三等分点
s.value_counts(dropna=False)#对Series进行唯一值统计计数
3 3 4 2 5 1 2 1 1 1 dtype: int64df.apply(pd.Series.value_counts)#对所有列运用pd.Series.value_counts方法进行个数统计
选择数据
df[0]#返回DataFrame中的指定列,作为一个Series返回
2017-07-07 0.012990 2017-07-08 0.037272 2017-07-09 0.666490 2017-07-10 0.753393 2017-07-11 0.098832 2017-07-12 0.214162 2017-07-13 0.850117 2017-07-14 0.731037 Freq: D, Name: 0, dtype: float64df[[2,4,3]]#将指定的列作为一个新的DataFrame对象返回
s
0 1 1 2 2 3 3 4 4 5 5 4 6 3 7 3 dtype: int64s.iloc[2]#对Series按位置选择
3s.loc[2]#对Series按索引选择
3df.iloc[0,:]#选择DataFrame的第一行,以Series对象返回
0 0.012990 1 0.222129 2 0.006620 3 0.159968 4 0.793618 Name: 2017-07-07 00:00:00, dtype: float64df.iloc[0,0]#选择DataFrame中的第一行的第一个元素,数据类型numpy.float64
0.012990160364784065数据清洗
df=pd.DataFrame([[1,2,3,8,5],[6,7,np.NaN,8,9],[2,3,np.NaN,np.NaN,0],[3,4,5,6,7]])df
df.columns=['a','b','c','d','e']#重命名列名
pd.isnull(df)#检查是否有null值,返回一个布尔值举止,null为True,这句也可写成df.isnull()形式
pd.notnull(df)#与pd.isnull方法相反
df.dropna()#丢弃所有包含null值的行
df.dropna(axis=1)#丢弃所有包含null值的列
df.dropna(axis=1,thresh=3)#丢弃所有非null值个数少于3的列
df.fillna(x)#将所有的null值用x替换s.fillna(s.mean())#将所有的null值用平均值代替,这里的平均值可以替换成任何统计函数s.astype(float)#将数据类型转换为floats.replace(1,'one')#将值为1的值替换为ones.replace([1,3],['one','three'])#将所有的1替换为one,所有的3替换为three
df.columns=[1,2,3,4,5]df
df.rename(columns=lambda x:x+1)#这个函数返回一个新的DataFrame对象,原来的df不变
df.rename(columns={'old_name':'new_name'})#选择性修改指定的列名df.set_index(1)#重命名索引,以指定的列作为索引,返回一个新的DataFrame对象
df.rename(index=lambda x:x+1)#批量修改索引,返回一个新的DataFrame对象
过滤,排序,分组
df[df[5]>2]#返回列名为5的列中大于2的行
df[(df[5]>5) &(df[2]>4)]#返回5列中大于5,并且2列中大于4的行
df.sort_values(2)#以2列升序排列
df.sort_values(2,ascending=False)#以2列降序排列
df.sort_values([col1,col2],ascending=[True,False])#以col1升序,col2降序排列
df.groupby(1)#以1列分组,返回一个groupby对象
df.groupby([col1,col2])#返回一个多列分组的结果df.groupby(col1)[col2].mean()#返回以col1分组后的col2列的平均值,这里mean()可以替换成其他统计函数df.pivot_table(index=col1,values=[col2,col3],aggfunc=mean)#创建一个数据透视表df.groupby(col1).agg(np.mean)#Finds the average across all columns for every unique column 1 group
df.apply(np.mean)#对每一列应用平均值函数
1 3.000000 2 4.000000 3 4.000000 4 7.333333 5 5.250000 dtype: float64df.apply(np.max,axis=1)#求每一行的最大值
0 8.0 1 9.0 2 3.0 3 7.0 dtype: float64连接,结合
df1.append(df2)#将df2的行加加到df1后面,列数必须相等df.concat([df1,df2],axis=1)#将列进行链接,行数必须相等df1.join(df2,on=col1,how='inner')#有点类似SQL里的内链接,how值还有'left','right','outer','inner'
统计函数
df.describe()#总结统计,以列为单位
df.mean()#均值
1 3.000000 2 4.000000 3 4.000000 4 7.333333 5 5.250000 dtype: float64df.corr()#返回列与列之间的相关度矩阵
df.count()#返回每列的非空值数
1 42 43 24 35 4dtype: int64
df.max()
1 6.02 7.03 5.04 8.05 9.0dtype: float64
df.min()
1 1.02 2.03 3.04 6.05 0.0dtype: float64
df.median()#返回中位数
1 2.52 3.53 4.04 8.05 6.0dtype: float64
df.std()
1 2.1602472 2.1602473 1.4142144 1.1547015 3.862210dtype: float64
阅读全文
0 0
- Pandas入门笔记
- pandas入门笔记
- pandas入门 笔记
- Pandas入门笔记2-索引对象
- python学习笔记一(pandas入门)
- pandas入门
- pandas入门
- Pandas入门
- Pandas入门
- pandas入门
- pandas入门
- Pandas 入门
- pandas入门
- Pandas入门
- pandas 笔记
- pandas笔记
- pandas笔记
- Pandas笔记
- 第5章 DOM详解
- MySQL主从复制实现读写分离
- 基于MATLAB的BP神经网络的算法实现
- JAVA关键字的理解和整理
- Rails Controller中的 render
- pandas入门笔记
- DBMS体系介绍
- 触摸事件
- 检测手机最多可以几个点触摸
- plsql连接本地oracle和远程oracle
- 多重背包问题的三种复杂度解法,O(n * w * c)、O(n*w*log c)和O(n * w)。
- C# webBrowser写模拟器时的javascript脚本调用问题
- 欧拉通路
- htmlunit使用代理IP