pandas
一、pandas数据结构
pandas最核心的就是Series
和DataFrame
两个数据结构
名称 | 维度 | 说明 |
---|---|---|
Series | 1维 | 带有标签的同构类型数组 |
DataFrame | 2维 | 表格结构,带有标签,大小可变,且可以包含异构的数据列 |
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
- 读取文件
pandas.read_csv(csv_file)
三、pandas基本功能
Series基本功能
编号 | 属性或方法 | 描述 |
---|---|---|
1 | axes | 返回行轴标签列表。 |
2 | dtype | 返回对象的数据类型(dtype )。 |
3 | empty | 如果系列为空,则返回True 。 |
4 | ndim | 返回底层数据的维数,默认定义:1 。 |
5 | size | 返回基础数据中的元素数。 |
6 | values | 将系列作为ndarray 返回。 |
7 | head() | 返回前n 行。 |
8 | tail() | 返回最后n 行。 |
DataFrame基本功能
编号 | 属性或方法 | 描述 |
---|---|---|
1 | T | 转置行和列。 |
2 | axes | 返回一个列,行轴标签和列轴标签作为唯一的成员。 |
3 | dtypes | 返回此对象中的数据类型(dtypes )。 |
4 | empty | 如果NDFrame 完全为空[无项目],则返回为True ; 如果任何轴的长度为0 。 |
5 | ndim | 轴/数组维度大小。 |
6 | shape | 返回表示DataFrame 的维度的元组。 |
7 | size | NDFrame 中的元素数。 |
8 | values | NDFrame的Numpy表示。 |
9 | head() | 返回开头前n 行。 |
10 | tail() | 返回最后n 行。 |
四、pandas描述性统计
编号 | 函数 | 描述 |
---|---|---|
1 | count() | 非空观测数量 |
2 | sum() | 所有值之和 |
3 | mean() | 所有值的平均值 |
4 | median() | 所有值的中位数 |
5 | mode() | 值的模值 |
6 | std() | 值的标准偏差 |
7 | min() | 所有值中的最小值 |
8 | max() | 所有值中的最大值 |
9 | abs() | 绝对值 |
10 | prod() | 数组元素的乘积 |
11 | cumsum() | 累计总和 |
12 | cumprod() | 累计乘积 |
13 | describe() | 汇总函数 |
五、pandas迭代
- Series - 值
- DataFrame - 列标签
- Pannel - 项目标签
迭代DataFrame
-
直接迭代DataFrame 对象提取列名
-
iteritems() 迭代(key,values)
单独迭代每个列作为系列中的键值对
-
iterrows()
- 迭代(row_index,row)将行迭代为(索引,系列) 返回迭代器,产生每个索引值以及包含每行数据的序列
-
itertuples()
- 以namedtuples
的形式迭代行为
DataFrame
中的每一行返回一个产生一个命名元组的迭代器。元组的第一个元素将是行的相应索引值,而剩余的值是行值
六、pandas排序
- 按标签排序
sort_index() 升序
sort_index(ascending = False) 降序
- 按列排序
sort_index(axis=1)
- 按值排序
sort_values(by=‘column’)
sort_values(by=[‘columu1’,‘column2’])
七、pandas字符串操作
编号 | 函数 | 描述 |
---|---|---|
1 | lower() | 将Series/Index 中的字符串转换为小写。 |
2 | upper() | 将Series/Index 中的字符串转换为大写。 |
3 | len() | 计算字符串长度。 |
4 | strip() | 帮助从两侧的系列/索引中的每个字符串中删除空格(包括换行符)。 |
5 | split(' ') | 用给定的模式拆分每个字符串。 |
6 | cat(sep=' ') | 使用给定的分隔符连接系列/索引元素。 |
7 | get_dummies() | 返回具有单热编码值的数据帧(DataFrame)。 |
8 | contains(pattern) | 如果元素中包含子字符串,则返回每个元素的布尔值True ,否则为False 。 |
9 | replace(a,b) | 将值a 替换为值b 。 |
10 | repeat(value) | 重复每个元素指定的次数。 |
11 | count(pattern) | 返回模式中每个元素的出现总数。 |
12 | startswith(pattern) | 如果系列/索引中的元素以模式开始,则返回true 。 |
13 | endswith(pattern) | 如果系列/索引中的元素以模式结束,则返回true 。 |
14 | find(pattern) | 返回模式第一次出现的位置,无则返回-1 |
15 | findall(pattern) | 返回模式的所有出现的列表,无则返回[] |
16 | swapcase | 变换字母大小写。 |
17 | islower() | 检查系列/索引中每个字符串中的所有字符是否小写,返回布尔值 |
18 | isupper() | 检查系列/索引中每个字符串中的所有字符是否大写,返回布尔值 |
19 | isnumeric() | 检查系列/索引中每个字符串中的所有字符是否为数字,返回布尔值。 |
八、pandas选项和自定义
- get_option(parm) 返回参数
- set_option(param,value) 设定指定参数值
- reset_option(param) 重置参数值
- describe_option(param) 打印参数描述
- option_context(param,value) 上下文管理器,临时设置参数值
九、pandas缺失数据
-
检查缺失数据
isnull() notnull()
-
替换缺失数据
findna(values) : 标量值替换
replace({old_values: new_values})
-
排除缺失值
dropna(axis=0 ) 如果行内的任何值是
NA
,那么整个行被排除十、pandas分组
-
数据分组
- obj.groupby(‘key’)
- obj.groupby([‘key1’,‘key2’])
- obj.groupby(key,axis=1)
- 迭代遍历分组
- 选择分组
obj.get_group()
- 聚合
obj.[‘key’].agg(np.mean)
obj.[‘key’].agg(np.size)
obj.[‘key’].agg([np.size,np.mean,np.std].)
-
过滤
obj.filter(items=[‘key1’,‘key2’])
十一、pandas合并/连接
- 连接 merge()
pd.merge(left,right,on='id')
- 合并 how
pd.merge(left,right,on='id',how='inner')
参数:
合并方法 | SQL等效 | 描述 |
---|---|---|
left | LEFT OUTER JOIN | 使用左侧对象的键 |
right | RIGHT OUTER JOIN | 使用右侧对象的键 |
outer | FULL OUTER JOIN | 使用键的联合 |
inner | INNER 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])