pandas学习笔记

    技术2026-04-11  10

    pandas: panel+data+analysis 封装了matplotlib和numpy,计算画图方便 基础处理 核心数据结构: DataFrame 结构:既有行索引,又有列索引的二维数组 行索引,表明不同行,横向索引 ,index 列索引,表明不同列,纵向索引,columns

    属性: shape index MultiIndex index属性:df.index.names, df.index.levels

    colunms values T 方法: head 前多少行 tail 后多少行 DataFrame索引设置 1)修改行列索引值,不能单独修改索引,能整体修改

    2)重设索引 reset_index(drop=False) 设置新的下标索引,drop默认为false,不删除原来索引,如果为true,删除原来的索引值

    3)设置新索引 以某列值设置为新的索引 set_index(keys.drop=True) keys:列索引名称或者列索引名称列表 drop:boolean,default true。当作新的索引,删除原来的列 Panel 0.25.0 开始已经移除了,存在但没用

    Series:带索引的一维数组 属性:index、values 方法: 基本操作

    索引操作:不能直接进行数字索引。直接索引必须先列后行

    按名字索引 data.loc[2,‘time’] 按数字索引 data.iloc[0,0] 组合索引 data.ix[]

    赋值操作

    排序:data.sort_values(by=,ascending=) 单个或多个键进行排序,默认升序,ascending=False,降序。ascending=True,升序。 data.sort_values(by=[‘high’,‘p_change’],ascending=Fasle) #先按high降序,数字相同时按p_change排序 data.sort_index() 按索引进行排序 2701835661 data.sort_value() 按值进行排序 算数运算 add(other)

    sub(other)

    逻辑运算 逻辑运算符<,>,|,& 布尔索引

    逻辑运算函数 query(expr)

    isin()

    统计运算 min max mean median var std describe() 返回位置data.idxmax() data.idxmin() 累计统计函数 cumsum 计算前1/2/3/…/n个数的和 cumax 计算前1/2/3/…/n个数的最大值 cumin 计算前1/2/3/…/n个数的最小值 cumprod 计算前1/2/3/…/n个积

    自定义运算 apply(func,axis=0) func:自定义函数 axis=0:默认是列,axis=1为行进行运算

    画图 sr.plot DataFrame.plot (x=None,y=None,kind=‘line’) x:label or position, deffault None y:label, position or list of label, positions,default None Allows plotting of one column versus another kind:str ‘line’: line plot(default) ‘bar’: vertical bar plot ‘barh’: horizontal bar plot ‘hist’:histogram ‘pie’:pie plot ‘scatter’:scatter plot 文件的读取与存储:CSV, SQL、XLS, JSON, HDF5

    读取csv文件 pandas.read_csv(filepath_or_buffer, sep=’ ’ ,delimiter=None) usecols:指定读取的列名,列表形式 names:添加参数。 写入csv文件-to_csv() DataFrame.to_csv(path_or_buffer=None, sep=’, ', columns=None, header=True,index=True,index_label=None,mode=‘w’,encoding=None)

    HDF5 hdf5存储3维数据的文件 read_hdf() to_hdf() 必须要指定一个key

    优先选择使用HDF5文件存储 HDF5在存储的是支持压缩,使用方式是blosc,这个是速度最快的,也是pandas默认支持的 使用压缩可以提高磁盘利用率,节省空间 HDF5还是跨平台的,可以轻松潜移到hadoop上面 JSON Json是我们长哟男的一种数据交换格式。在前后端的交互中经常用到 pd.read_json(path_or_buffer=None,orient=None,typ=‘frame’,lines=False)

    pd.read_json(path) orient=‘records’ lines=True pd.to_json() orient=‘records’ lines=True 高级处理 缺失值处理 1):删除含有缺失值的样本 2):替换/插补 如何处理nan 判断数据中是否存在nan pd.isnull(df) pd.notnull(df) 删除含有缺失值的样本 df.dropna(axis=‘rows’) 默认删除行,axis=1删除列 替换/插补 df.filna(valie, inplace=True) True会修改原数据,False不替换修改原数据,生成新的对象

    不是缺失值nan,有默认标记的

    movie[‘Revenue(Millions)’].fillna(movie[‘Revenue(Millions)’].mean(), inplace='True’) movie[‘Metascore’].fillna(movie[‘Metascore’].mean(), inplace='True’)

    不是确实nan,有默认标记的

    替换? ->np.nan df.replace(to_replace="?",value=np.nan) 缺失值处理实例 高级处理——数据离散化

    one-hot编码&哑变量 为什么要进行离散化: 如何实现数据的离散化: 1.分组 自动分组 sr = pd.qcut(data, bins) data,数据bins分的组数 自定义分组pd.cut(data, []) series.value_counts(),统计分组次数

    2.将分组好的结果转换成one-hot编码 pd.get_dumies(data, prefix=) data: array-like, Series,or DataFrame prefix: 分组名字,前缀

    高级处理-合并 numpy np.concatnate((a, b), axis=) np.hstack() 水平拼接 np.vstack()竖直拼接 1.按方向拼接 pd.concat([data1,data2],axis=1) 按照行或列进行合并,axis=0为列索引,axis=1为行索引 2.按索引进行拼接 pd.merge()实现合并 pd.merge(left,right,how=‘inner’,on=[索引])

    交叉表和透视表 交叉表crosstab:用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系) pd.crosstab(value1, value2) pandas日期类型处理 date = pd.to_datetime(stock.index) date.weekday date.month

    默认

    使用pivot_table透视表实现

    分组与聚合 DataFrame.groupby(by, as_index=False) by:分组的列数据,可以多个

    Processed: 0.011, SQL: 9