dataframe为pandas中的数据格式,通常用来存储时间序列数据,比如K线数据,这在量化分析时通常用到。
1、创建dataframe
import pandas as pd
df0 = pd.DataFrame([[1,2,3,4],[5,6,7,8]], columns=['a', 'b', 'c', 'd'])
2、读取csv文件为dataframe格式,或保存为csv文件
df0 = pd.read_csv(data_path)
df0.to_csv(data_path, index=False, encoding = 'utf-8')
#index = False表示不保存索引
3、获取column列栏目名称,行索引名,全部数值
df0.columns
df0.index
print(df0.values)
print(7 in df0.values)
4、行列数量查询
返回列数:
df.shape[1]
返回行数:
df.shape[0]
或者:
len(df)
5、修改行列索引名称
df0.index = df0['列名']
df0.rename(columns={'原名称':'新名称'},inplace=True)
6、iloc索引,整数数值索引
df0.iloc[:3, 0:2]
df0.iloc[:3, 0:2].values
7、判断是否有缺失值nan
df.isnull().any() 用来判断某列是否有缺失值
df.isnull().all() 用来判断某列是否全部为空值
df.dropna()默认删除了含有缺失值的所有行,如果我们只需要把某一行所有数据为缺失值的才删除,那么需要用how=‘all’进行限制,如df2.dropna(how='all')
如果要删除DataFrame的缺失值所在的列,那么只需加上axis=1即可
8、按列进行排序
df2 = df1.sort_values(by=['列名'], ascending = [True]) #升序排列
9、交集并集补集
df1 = DataFrame([['a', 10, '男'],
['b', 11, '男'],
['c', 11, '女'],
['a', 10, '女'],
['c', 11, '男']],
columns=['name', 'age', 'sex'])
df2 = DataFrame([['a', 10, '男'],
['b', 11, '女']],
columns=['name', 'age', 'sex'])
取交集:print(pd.merge(df1,df2,on=['name', 'age', 'sex']))
取并集:print(pd.merge(df1,df2,on=['name', 'age', 'sex'], how='outer'))
取差集(从df1中过滤df1在df2中存在的行):
df1 = df1.append(df2)
df1 = df1.append(df2)
df1 = df1.drop_duplicates(subset=['name', 'age', 'sex'],keep=False)
print(df1)