数组创建
np.array()、np.zeros()、np.ones()、np.empty()、np.arrange()
属性:dtype、shape
索引
arr[][]、 arr[:, :]
条件判断
np.where(condition, arr1, arr2)
布尔数组
any(): 用于测试数组(向量)中是否存在True
all(): 用于确定数组中是否全是True
改变数组形状
reshape()、flatten()
连接和切分
结构化数组
平铺函数: numpy.tile(a, repeats)
元素复制函数:numpy.repeat(a, repeats, axis=None)
添加元素: numpy.append(arr, values, axis=None)
删除元素:numpy.delete(arr,obj,axis=None)
矩阵操作
转置: .T、transpose()
统计操作
函数 | 功能 |
---|---|
sum | 对数组中全部或某轴向的元素求和。零长度的数组的sum为0 |
mean | 算数平均数。零长度的数组的mean为NaN |
std、var | 分别为标准差和方差,自由度可调(默认为n) |
min、max | 最大值和最小值 |
argmin、argmax | 分别为最大和最小元素的索引 |
cumsum | 所有元素的累计和 |
cumprod | 所有元素的累计积 |
文件读写
savetxt(fileName,data)
loadtxt:读取csv文件
np.loadtxt(filepath,delimiter,usecols,unpack)
与list的转换
转为list:arr.tolist()
list转为array:np.array(list1)
series的使用
from pandas import Series
obj = Series([1,3,5])
print(obj)
# 0 1
# 1 3
# 2 5
print(obj.values)
print(obj.index)
# 自定义索引
obj = Series(['aa','bb','cc'], index=['a1','a2','a3'])
# 字典转为series
salarydata = {
'a':5000, 'b':8000, 'c':7500}
obj = Series(salarydata)
#判断是否有缺失值
print(pd.isnull(obj2))
print(pd.notnull(obj2))
DataFrame的使用
from pandas import DataFrame
data = {
'Number':[1,2,3,4,5],
'Name':['Alvin','Teresa','Elly','James','Nancy'],
'Scores':[98.5, 100.0, 93.0,98.5,90.5]}
frame = DataFrame(data)
print(frame)
# 创建指定序列顺序的DataFrame
frame2 = DataFrame(data, columns=['Number','Name','Scores'])
print(frame2)
#指定index
frame3 = DataFrame(data, columns['Number','Name','Scores','Age'],index=['No.01','No.02','No.03','No.04','No.05'])
#访问操作
dataframe对象[ 列名称 ] 或 dataframe对象.列名称
#行列索引名
frame.index.name
frame.columns.name
frame.values
#head和tail的方法
Head获取开头若干行数据
tail获取结尾若干行数据
#info方法
获取数据信息,包括索引类型和列类型、非空值和内存使用
DataFrame支持构造
类型 | 说明 |
---|---|
二维 ndarray | 数据矩阵,还可以传入行标和列标 |
由数组、列表或元组组成的字典 | 每个序列会变成DataFrame的一列。所有序列的长度必须相同。 |
NumPy的钢结构化/记录数组 | 类似于“由数组组成的字典” |
由Series组成的字典 | 每个Series会成为一列。如果没有显示指定索引,则个Series的索引会被合并成结果饿行索引 |
由字典组成的字典 | 各内层字典会成为一列。键会被合并成结果的行索引,跟“由Series组成的字典”的情况一样 |
字典或Series的列表 | 各项将会成为DataFrame的一行。字典键或Series索引的并集将会成为DataFrame的列标 |
由列表或元组组成的列表 | 类似于“二维ndarry” |
另一个DataFrame | 该DataFrame的索引将会被沿用,除非显式指定了其他索引 |
NumPy的MaskedArray | 类似于“二维ndarry”的情况,只是掩码值在结果DataFrame会变成NA/缺失值 |
索引
series同numpy类似,但索引值可以不为整数。
切片
与numpy不同,其末端是包含的。
算数运算
它可以对不同索引的对象进行算数运算。
在将对象相加时,如果存在不同索引对,则结果的索引就是该索引对的并集。
对于DataFrame对象而言,对齐操作同时发生在行和列上。有对应的值则相加,没有则用NAN填充
add(加)、sub(减)、mul(乘)、div(除),可以加入fill_value
df1.add(df2, fill_value=0)
删除
df1 = df.drop([‘No3’,‘No1’] , axis=0)
排序
s.sort_index(ascending=?, axis=?):axis=0 行索引、axis=1 列索引
s.sort_values(by=)by指定列排序
改变索引
Pandas对象的一个重要方法是 reindex(),其作用是创建一个适应新索引的新对象(如果某个索引值当前不存在,就引入缺失值NAN)。可用fill_value、
也可引入method填充:
参数 | 说明 |
---|---|
ffill 或 pad | 前向填充(或搬运)值 |
dfill 或 backfill | 后向填充(或搬运)值。 |
columns = new_columns
类型 | 说明 |
---|---|
index | 用作索引的新序列。既可以是Index实例,也可以是其他序列型的Python数据结构。Index 会被完全使用,就像没有任何复制一样。 |
method | 插值(填充)方式。 |
fill_value | 在重新索引的过程中,需要引入缺失值时使用的替代值。 |
limit | 前向或后向填充时的最大填充量。 |
level | 在MultiIndex的指定级别上匹配简单索引,否则选取其子集。 |
copy | 默认为True,无论如何都复制;如果为False,则新旧相等就不复制。 |