pandas

pandas

一、pandas数据结构

pandas最核心的就是SeriesDataFrame两个数据结构

名称维度说明
Series1维带有标签的同构类型数组
DataFrame2维表格结构,带有标签,大小可变,且可以包含异构的数据列

DataFrame可以看做是Series的容器,即:一个DataFrame中可以包含若干个Series

Series创建数据

方式一: 创建Series时不指定索引,默认索引是[1, N-1]的形式

import pandas

serie1 = pandas.Series([1,2,3,4])

print("serie1: \n{}\n".format(serie1))
print("serie1.values: {}\n".format(serie1.values))
print("serie1.index: {}\n".format(serie1.index))

方式二: 创建Series时指定索引。索引未必一定需要是整数,可以是任何类型的数据,例如字符串。

import pandas

serie2 = pandas.Series([1,2,3,4,5,6,7],
     index=["a","b","c","d","e","f","g"])
     
print("serie2: \n{}\n".format(serie2))
print("e is {}\n".format(serie2["e"]))

DataFrame创建数据

方式一: 创建DataFrame不指定索引和列,默认的索引和列名都是[0, N-1]的形式

import pandas
import Numpy

df2 = pandas.DataFrame(numpy.arange(16).reshape(4,4))
print("df2:\n{}\n".format(df2))

方式二: 创建DataFrame指定索引及列

df1 =  pandas.DataFrame(numpy.arange(16).reshape(4,4),
    columns=["column1","column2","column3","column4"],
    index=["1","2","3","4"])

print("df1:\n{}\n".format(df1))

说明: numpy.arange()方法用于生成一维数组

​ numpy.reshape()方法将一维数组转换为多维数组

二、pandas IO

  1. 读取文件

pandas.read_csv(csv_file)

三、pandas基本功能

Series基本功能

编号属性或方法描述
1axes返回行轴标签列表。
2dtype返回对象的数据类型(dtype)。
3empty如果系列为空,则返回True
4ndim返回底层数据的维数,默认定义:1
5size返回基础数据中的元素数。
6values将系列作为ndarray返回。
7head()返回前n行。
8tail()返回最后n行。

DataFrame基本功能

编号属性或方法描述
1T转置行和列。
2axes返回一个列,行轴标签和列轴标签作为唯一的成员。
3dtypes返回此对象中的数据类型(dtypes)。
4empty如果NDFrame完全为空[无项目],则返回为True; 如果任何轴的长度为0
5ndim轴/数组维度大小。
6shape返回表示DataFrame的维度的元组。
7sizeNDFrame中的元素数。
8valuesNDFrame的Numpy表示。
9head()返回开头前n行。
10tail()返回最后n行。

四、pandas描述性统计

编号函数描述
1count()非空观测数量
2sum()所有值之和
3mean()所有值的平均值
4median()所有值的中位数
5mode()值的模值
6std()值的标准偏差
7min()所有值中的最小值
8max()所有值中的最大值
9abs()绝对值
10prod()数组元素的乘积
11cumsum()累计总和
12cumprod()累计乘积
13describe()汇总函数

五、pandas迭代

  • Series - 值
  • DataFrame - 列标签
  • Pannel - 项目标签

迭代DataFrame

  1. 直接迭代DataFrame 对象提取列名

  2. iteritems() 迭代(key,values)

    单独迭代每个列作为系列中的键值对

  3. iterrows() - 迭代(row_index,row)

    将行迭代为(索引,系列) 返回迭代器,产生每个索引值以及包含每行数据的序列

  4. itertuples() - 以namedtuples的形式迭代行

    DataFrame中的每一行返回一个产生一个命名元组的迭代器。元组的第一个元素将是行的相应索引值,而剩余的值是行值

六、pandas排序

  1. 按标签排序

sort_index() 升序

sort_index(ascending = False) 降序

  1. 按列排序

sort_index(axis=1)

  1. 按值排序

sort_values(by=‘column’)

sort_values(by=[‘columu1’,‘column2’])

七、pandas字符串操作

编号函数描述
1lower()Series/Index中的字符串转换为小写。
2upper()Series/Index中的字符串转换为大写。
3len()计算字符串长度。
4strip()帮助从两侧的系列/索引中的每个字符串中删除空格(包括换行符)。
5split(' ')用给定的模式拆分每个字符串。
6cat(sep=' ')使用给定的分隔符连接系列/索引元素。
7get_dummies()返回具有单热编码值的数据帧(DataFrame)。
8contains(pattern)如果元素中包含子字符串,则返回每个元素的布尔值True,否则为False
9replace(a,b)将值a替换为值b
10repeat(value)重复每个元素指定的次数。
11count(pattern)返回模式中每个元素的出现总数。
12startswith(pattern)如果系列/索引中的元素以模式开始,则返回true
13endswith(pattern)如果系列/索引中的元素以模式结束,则返回true
14find(pattern)返回模式第一次出现的位置,无则返回-1
15findall(pattern)返回模式的所有出现的列表,无则返回[]
16swapcase变换字母大小写。
17islower()检查系列/索引中每个字符串中的所有字符是否小写,返回布尔值
18isupper()检查系列/索引中每个字符串中的所有字符是否大写,返回布尔值
19isnumeric()检查系列/索引中每个字符串中的所有字符是否为数字,返回布尔值。

八、pandas选项和自定义

  • get_option(parm) 返回参数
  • set_option(param,value) 设定指定参数值
  • reset_option(param) 重置参数值
  • describe_option(param) 打印参数描述
  • option_context(param,value) 上下文管理器,临时设置参数值

九、pandas缺失数据

  1. 检查缺失数据

    isnull() notnull()

  2. 替换缺失数据

    findna(values) : 标量值替换

    replace({old_values: new_values})

  3. 排除缺失值

    dropna(axis=0 ) 如果行内的任何值是NA,那么整个行被排除

    十、pandas分组

  4. 数据分组

  • obj.groupby(‘key’)
  • obj.groupby([‘key1’,‘key2’])
  • obj.groupby(key,axis=1)
  1. 迭代遍历分组
  2. 选择分组

​ obj.get_group()

  1. 聚合

​ obj.[‘key’].agg(np.mean)

​ obj.[‘key’].agg(np.size)

​ obj.[‘key’].agg([np.size,np.mean,np.std].)

  1. 过滤

    obj.filter(items=[‘key1’,‘key2’])

十一、pandas合并/连接

  1. 连接 merge()
pd.merge(left,right,on='id')
  1. 合并 how
pd.merge(left,right,on='id',how='inner')

参数:

合并方法SQL等效描述
leftLEFT OUTER JOIN使用左侧对象的键
rightRIGHT OUTER JOIN使用右侧对象的键
outerFULL OUTER JOIN使用键的联合
innerINNER JOIN使用键的交集

十二、pandas级联

连接对象

1.concat()连接

pd.concat([obj1,obj2])

pd.concat([obj1,obj2],ignore_index=True)

pd.concat([obj1,obj2],axis=1)

2.appen()连接

obj1.append(obj2)

obj1.append([obj2,obj3,obj4])

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值