pandas的df操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas的df操作相关的知识,希望对你有一定的参考价值。
参考技术A 2018/04/21记录一些在使用pandas_udf时候学习的一些简单pandas操作。
1、自己创建新的df。
所以,初始化的时候,还是要先创建Series,不过具体还可以看看这个官网部分的初始化。
file:///E:/Maybe/4.%E5%AD%A6%E4%B9%A0%E6%9D%82%E8%AE%B0/pandas/pandas/html/dsintro.html#dataframe
但是实际在用修饰器的时候,还是出错了。
ArrowNotImplementedError: No cast implemented from string to int32
不明白哪里出错了。
问题找到了,因为修饰器的地方,指定了表结构,但是我构造DF的时候,使用的字典的方式,结果导致这里构造的DF跟修饰器上的不一样。这个东西就比较尴尬了。
就是字典构造的时候他把这个列顺序给改了,虽然写的时候是按照自己键值顺序写的,但是实际穿进去的时候,就不一样了。。这就比较尴尬。我记得字典是有这个特性的。但是想不起来是在哪看到的了。
pandas 基本操作
1.
import pandas as pd import numpy as np df1 = pd.DataFrame(np.arange(12).reshape(3, 4)) df2 = pd.DataFrame(np.arange(20).reshape(4, 5)) print(df1) print(df2) print(df1.add(df2, fill_value=1)) # 加运算 fill_value指定填充值,未对齐的数据将和填充值做运算 print(df1.sub(df2, fill_value=1)) # 减运算 fill_value指定填充值,未对齐的数据将和填充值做运算 print(df1.mul(df2, fill_value=1)) # 乘运算 fill_value指定填充值,未对齐的数据将和填充值做运算 print(df1.div(df2)) # 除运算 fill_value指定填充值,未对齐的数据将和填充值做运算 print(df1.truediv(df2)) # 除运算 fill_value指定填充值,未对齐的数据将和填充值做运算 print(df1.floordiv(df2)) # 向下取整除法 fill_value指定填充值,未对齐的数据将和填充值做运算 print(df1.mod(df2)) # 模运算 fill_value指定填充值,未对齐的数据将和填充值做运算 print(df1.pow(df2)) # 幂运算 fill_value指定填充值,未对齐的数据将和填充值做运算 DataFrame = pd.DataFrame(np.arange(20).reshape(4, 5)) DataFrame = pd.DataFrame([np.random.randn(3), [1., 2., np.nan], [np.nan, 4., np.nan], [1., 2., 3.]]) DataFrame = pd.DataFrame(‘key1‘: [‘a‘, ‘b‘, ‘a‘, ‘b‘, ‘a‘, ‘b‘, ‘a‘, ‘a‘], ‘key2‘: [‘one‘, ‘one‘, ‘two‘, ‘three‘, ‘two‘, ‘two‘, ‘one‘, ‘three‘], ‘data1‘: np.random.randn(8), ‘data2‘: np.random.randn(8)) print(DataFrame) print(DataFrame.head(5)) # 前面几个数据 print(DataFrame.index) # 获取索引 print(DataFrame.values) # 获取数据 print(DataFrame[‘drugName‘]) # 切片 DataFrame[‘G‘] = 4 # 增加列 del (DataFrame[‘G‘]) # 删除列 print(DataFrame.loc[0:2, ‘id‘:‘drugName‘]) # 第一个参数索引行,第二个参数是列,基于标签名的索引 print(DataFrame.iloc[0:2, 0:2]) # 第一个参数索引行,第二个参数是列,基于索引编号来索引 print(DataFrame.ix[0:2, ‘id‘:‘drugName‘]) # 第一个参数索引行,第二个参数是列,索引和标签都可以 print(np.abs(DataFrame)) # 绝对值 print(DataFrame.apply(lambda x: x.max(), axis=0)) # 使用apply应用行或列数据 axis=0,方向是列 axis=1,方向是行 print(DataFrame.applymap(lambda x: ‘%.2f‘ % x)) # 使用applymap应用到每个数据 print(DataFrame.sort_index(axis=1, ascending=True)) # 排序默认使用升序排序,ascending=False 为降序排序 axis=1,行升序 print(DataFrame.sort_values(by=1, ascending=True)) # 根据某个唯一的列名进行排序,by=‘column name‘ 如果有其他相同列名则报错. ascending=False 为降序排序 print(DataFrame.isnull()) # 判断是否存在缺失值 True,False print(DataFrame.dropna(axis=1)) # 丢弃缺失数据,根据axis轴方向,丢弃包含NaN的行或列,axis=0,方向是行 axis=1,方向是列 print(DataFrame.fillna(100)) # 填充缺失数据 print(DataFrame.sum(axis=0)) # 求和 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.max(axis=0)) # 最大值 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.min(axis=0)) # 最小值 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.mean(axis=0)) # 平均值 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.count(axis=0)) # 非NA值的个数 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.std(axis=0)) # 方差 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.cumsum(axis=0)) # 累计和 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.mad()) # 平均绝对差 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.cumprod()) # 累计积 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.idxmin()) # 最小值索引 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.idxmax()) # 最大值索引 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.groupby([‘key1‘, ‘key2‘]).mean()) # 根据字段分组 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True print(DataFrame.groupby([‘key1‘, ‘key2‘]).size()) # 每个分组的元素个数 axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True for i, j in DataFrame.groupby([‘key1‘, ‘key2‘]): # 迭代对象 print(list(DataFrame.groupby([‘key1‘, ‘key2‘]))) # 转列表 print(dict(list(DataFrame.groupby([‘key1‘, ‘key2‘])))) # 转字典 print(DataFrame.groupby(‘key1‘).agg(lambda df: df.max() - df.min())) # agg(func) func的参数为groupby索引对应的记录 print(DataFrame.groupby(‘key1‘).agg([‘mean‘, ‘std‘, ‘count‘])) # agg(func) func的参数为groupby索引对应的记录 print(DataFrame.describe()) # 详细信息 skipna 排除缺失值, 默认为True count 4.000000 4.000000 4.000000 4.000000 4.000000 该列(行)非NA值的个数 mean 7.500000 8.500000 9.500000 10.500000 11.500000 该列(行)的均值 std 6.454972 6.454972 6.454972 6.454972 6.454972 该列(行)的方差 min 0.000000 1.000000 2.000000 3.000000 4.000000 该列(行)的最小值 25% 3.750000 4.750000 5.750000 6.750000 7.750000 该列(行)的上四分位数 50% 7.500000 8.500000 9.500000 10.500000 11.500000 该列(行)的非NA值的平均数 75% 11.250000 12.250000 13.250000 14.250000 15.250000 该列(行)的下四分位数 max 15.000000 16.000000 17.000000 18.000000 19.000000 该列(行)的最大值
以上是关于pandas的df操作的主要内容,如果未能解决你的问题,请参考以下文章