一 Dataframe
pandas.DataFrame接口描述
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
参数 | 作用 |
---|---|
data | numpy ndarray(结构化或同类),dict或DataFrame,Dict可以包含Series,数组,常量或类似列表的对象 |
index | dataframe的索引,如果没有自定义,则默认为RangeIndex(0,1,2,…,n) |
columns | dataframe的列标签,如果没有自定义,则默认为RangeIndex(0,1,2,…,n) |
dtype | 默认None,要强制的数据类型。 只允许一个dtype |
copy | boolean,默认为False |
创建Dataframe
创建空Dataframe:a=pd.DataFrame()
1.使用列表创建
2.使用字典
pandas读文件
hr_df是dataframe类型的,注意names是自己给读取的几列数据取的名字,并不是原本文件里面的列名
hr_df = pd.read_csv(os.path.join(data_catalog, filename), sep=',', header=None, names=["index", "score_change", "Q1", "Q2", 'doctor', 'robot'])
pandas写文件
hr_low_df.to_csv('pro2/' + '{}_low_{}.csv'.format(fname,tempname), sep=',', header=None, index=None, encoding='utf-8')
Dataframe 操作数据
1 获取score_change列数据
print(hr_df['score_change'])#注意返回值类型是series类型,但是有tolist方法
2 获取某行数据(如获取c行数据)
print(hr_df.loc['c'])#同样返回的是series类型
#如果没有索引
print(hr_df.loc[0])#表示获取第0行数据
.loc for label based indexing 基于行列名取数据
.iloc for positional indexing 基于位置取数据
.ix 既可以标签,又可以基于位置
至于使用loc,iloc,at iat的区别可以参见此链接
还有这篇,当行索引不是数字的时候,遍历所有的行时,用iloc就很方便
3 插入列
在最后一列插入列
在第0列插入
df.insert(0,'qid',data_df['qid'])
#第一个参数0表明第0列插入,第一列插入则为1,第二个参数qid表明插入的列名为qid,第三个参数为插入的列元素,可为series类型,也可为列表类型
4 删除列
df.pop('A')#表明删除第A行
df.drop(['TotalWorkingYears', 'YearsWithCurrManager'], axis = 1, inplace = True) #axis 默认为0,指删除行,因此删除columns时要指定axis=1,inplace=True,则会直接在原数据上进行删除操作,删除后无法返回
5.简单的数据描述
Dataframe迭代器
dataframe可以理解为一张二维数据表
iterrows() 是在数据框中的行进行迭代的一个生成器,它返回每行的索引及一个包含行本身的对象。
index返回的是行索引
这是row返回的数据
缺失值
print(df.isnull().any())#检查是否有缺失值
df=df.dropna()#删除有缺失值的行
缺失值处理
显示缺失值所在的行
二 Series类型
创建series,1.不显示指定index
2 显示指定index
3 通过字典创建
4 使用numpy创建