pandas方法之DataFrame

1. Dataframe的创建

  • 1. 由数组或列表组成的字典构建DataFrame
1 data1 = {'a' : [1,2,3],'b' : [4,5,6], 'c' : [7,8,9]}
2 df1 = pd.DataFrame(data1)
  • 2. 由Series组成的字典构建DataFrame
1 data2 = {'a' : pd.Series(np.random.rand(3)),
2 'b' : pd.Series(np.random.rand(3)*10),
3 'c' : pd.Series(np.random.rand(3)*100)} 
4 df2 = pd.DataFrame(data2)
  • 3. 由字典组成的列表构建DataFrame
1 data4 = [{'a':1,'b':2},{'a':5,'b':10,'c':15}]
2 df4 = pd.DataFrame(data4)
  • 4. 由字典组成的字典构建DataFrame
1 data5 = {'xiaoming':{'Chinese':np.random.randint(60,100),
2 'Math':np.random.randint(60,100),
3 'Endlish':np.random.randint(60,100)},
4 'xiaohong':{'Chinese':np.random.randint(60,100),
5 'Math':np.random.randint(60,100),
6 'Endlish':np.random.randint(60,100)}
7 }
8 df5 = pd.DataFrame(data5)
  • 5. 通过二维数组构建DataFrame
df3 = pd.DataFrame([[1,2,3], [4,5,6],[7,8,9]])
  • 6. 读取文件直接转DataFrame
1 pd.read_csv()
2 pd.read_table()
3 pd.read_csv()

 

2. Dataframe的查询
(推荐使用loc方法, loc方法能够取到任何位置)

  • loc方法
1 DataFrame.loc[7]   #按单个索引 
2 DataFrame.loc[[1,2,4]]   #按索引的array
3 DataFrame.loc[[2:4]]      #按索引的切片 
4 DataFrame.loc[[2, "name"]]  #按行列定位 
5 DataFrame.loc[2, "age":"name"] 或 DataFrame.loc[2:6, "age":"name"]  #按行列的切片 
6 DataFrame.loc[[True,False,False,True]]   #按boolea的array
  • iloc方法(它接受的数字)
1 DataFrame.iloc[7]  #按单个索引
2 DataFrame.loc[[1,2,4]]  #按索引的array 
3 DataFrame.loc[[True,False,False,True]]  #按boolea的array
  • at方法、iat方法 (此处不再记述)

3. Dataframe行或列的删除方法

1 DataFrame.drop([1,5])    #
2 DataFrame.drop([1,5], axis = 1)   #

4. Dataframe的修改方法

  • 值的修改
1 DataFrame.loc[1:2,('english','id')]=[[38,2],[23,2]]  #loc方法
  • 列名的修改
1 DataFrame.columns=['english_new','id_new','math_new','name_new']    #修改全部列名
2 DataFrame.rename(columns={'english_new':'english'},inplace=True)    #rename方法
  • 索引的修改
1 DataFrame.rename({0:'english1'},inplace=True)  #rename方法
2 DataFrame.reset_index(inplace=True,drop=True)  #reset_index方法
3 DataFrame.set_index('id_new')    #将其它列设为索引
4 DataFrame.insert(第几列,新列列名,值)   #在指定位置添加新列 
  • 添加新行
1 1 pd.concat(obj=[obj1,obj2,……], 
2 2 axis=0) : axis = 0   #即在竖直方向上合并、排列 ; axis = 1 反之
3 3 DataFrameObj.append(obj,
4 4 ignore_index = False)     #按行方向合并; 当ignore_index = True时,即忽略要合并dataframe的index
5 5 DataFrameObj.merge(obj,on,……)    #按列的方向合并(将两个DataFrame关联起来,on参数指关联值)
6 6 DataFrameObj.join(obj,
7 7 lsuffixes = ...,
8 8 rsuffixes = ...,on = ...)    #按列的方向合并(第2、3参数表示当合并数据中有重名的列名时,将左右分别命名为……,on表示两数据集合并的关联列)

 

  • 其它
 1 transform()    #与groupby搭配使用, 在groupby分组使用transform将结果又自定义聚合起来
 2 corr()    #计算列的相关性(计算数据的相关系数)
 3 factorize()    #可以字符串转为数字编码。省去了人工使用map方法编码
 4 qcut()    #将连续数值分为指定份
 5 get_dummies()    #相当于one-hot编码
 6 Series.get()    #在Series中,通过get(index)方法来获取索引对应的值
 7 nlargest()    #依据指定的column, 取指定top N, 返回dataframe
 8  nsmallest()    #和nlargest相反
 9 numpy.corrcoef()    #计算相关系数
10 # 显示中文字体
11 import matplotlib
12 matplotlib.use('qt4agg')
13 #指定默认字体
14 matplotlib.rcParams['font.sans-serif'] = ['SimHei']
15 matplotlib.rcParams['font.family']='sans-serif'
16 #解决负号'-'显示为方块的问题
17 matplotlib.rcParams['axes.unicode_minus'] = False

 

posted @ 2020-03-03 17:40  Alexisbusy  阅读(170)  评论(0编辑  收藏  举报