Pandas基础知识
分类: 人工智能、学习笔记 1810 0
常用数据类型
- Series 一维,带标签数组
- 用法:
import pandas as pd # 法一 b = pd.Series([1,3,4,5,2,3,2], index=list("abcdefg")) # index指定索引值,与数组一一对应,b.dtype的值为int64 # 法二 a = {'name':'zhangsan', 'age':30} # a.dtype的值为object pd.Series(temp_dict) # 索引=键 索引对应的值=键对应的值
修改数据类型:astype(‘数据类型’)
- 取值
(1)根据索引取值
a['name']
取name对应索引对应的值a[['name','age']]
取不连续的name和age对应索引对应的值(2)根据位置取值
a[0]
取第一行a[:2]
取前三行a[[0,2]]
取不连续的 1和3 行 - 获取索引值
a.index 返回类型为:pandas.indexes.base.Index,可迭代
- 获取值
a.values 返回类型为:numpy.ndarray, 可迭代
- DataFrame 二维,Series容器
- 用法
import pandas as pd t = pd.DataFrame(np.arange(12).reshape((3,4)), index=list('abc'), columns=list('wxyz')) info = {'name':['zhangsan','lisi'], 'age':[12,15], 'sex':['f','m']} t2 = pd.DataFrame(info) # 键为列,值对应的下标为索引 info2 = [{'name':'zhangsan','age':23, 'sex':'F'},{'name':'lisi','age':23, 'sex':'M'}] t3 = pd.DataFrame(info2) # 键为列,每个字典对应的下标为索引
- 行索引:表明不同行,横向索引,叫index, 0 轴, axis = 0
- 列索引:表明不同列,纵向索引,叫columns, 1轴, axis = 1
- 缺值:自动填充
NaN
- 属性
shape: 行数 列数
ndim: 维度
values: 对象值,二维ndarary数组
- 方法
head(n):前几行
tail(n):后几行
info(): 相关信息的预览
describe():快速综合统计结果
sort_values(by=‘排序字段’, ascending=False) :按指定字段升序排序
- 用法
取值
- 取行:
(1)
df[:20]
前20行(2)
df[:20]['列索引名']
取指定列对应的前20行 - 取列
(1)
df['列索引名']
指定列 索引名对应的一列 返回的是Series类型 - loc和iloc
loc
通过标签(即列索引)取值t.loc['a','b']
取a行b列对应的值t.loc['a']
或t.loc['a',:]
取a对应的一整行t.loc[['a','c'],['b','d']]
多行多列
iloc
通过为止(即行索引)取值t.iloc[3]
或t.iloc[3,:]
取第四行t.iloc[:,2]
取第三列t.iloc[:,[2,1]]
取第3列和第2列t.iloc[[0,2],[2,1]]
取第1行和第3行对应的第3列和第2列t.iloc[1:,:2]
取1之后每一行对应2之前每一列
bool索引
df[bool判断表达式]
如:df[(df['列索引名']>10) & (df['列索引名']<20 )]
取df中指定列索引对应的值中10-20之间的元素
缺值处理
pd.isnull(t)
返回的数组中NaN为True,否则为False
pd.notnull(t)
返回的数组中NaN为False,否则为True
t.dropna(axis=0)
删除包含NaN的行
t.dropna(axis=0, how='all', inplace=True)
- how的值为all时,某行全为NaN时才删除,为any时存在NaN则删除整行
- inplace为True时,删除之后将结果替换为当前数组。
t.fillna(值)
将NaN填充为指定的值,常填充均值等,如t.fillna(t.mean())
会将NaN对应列的均值进行填充
t['列索引名'] = t['列索引名'].fillna(t['列索引名'].mean())
只将指定索引对应的列中NaN对应的值进行填充均值
合并
join()
按行合并df1.join(df2)
merge()
按列合并df1.merge(df2, on='操作的列名', how='inner')
内连接(默认) 交集df1.merge(df2, on='a')
方法会将df1中a列的值和df2中a列的值进行比较,然后将相等的值对应的整行进行合并,而且返回的结果中只包含具有可以合并的行df1.merge(df2, on='a', how='outer')
外连接,a列包含的数据为df1和df2中a列元素的并集,每行元素分别对应,有则是原数据(一般a列的元素都有,因为操作列为a),没有则是NaN 并集df1.merge(df2, on='a', how='left')
左连接,以df1为准df1.merge(df2, on='a', how='right')
右连接,以df2为准
分组和聚合
分组: gd = groupby(by='分组字段')
返回类型是可遍历的DataFrameGroupBy类型,遍历后每一个元素为一个元组,
聚合:gd.count()
索引和符合索引
- 函数
df.index
获取indexdf.index=['x', 'y']
指定indexdf.reindex(list('abcdef'))
重新设置index,如果之前没有f行,则f行对应的数据为NaNdf.set_index('a', drop=False)
指定某一列作为indexdf.set_index('a').index.unique()
返回index的唯一值df.swaplevel()
交换符合索引的顺序 - 取值
一对多:
df.loc['一'].loc['多']
df.loc['多']['一']
df['一','多']
常与swaplevel()搭配
共 0 条评论关于 “Pandas基础知识”