pandas-----基本函数

相关知识

列转行方法

  • stack函数:pandas.DataFrame.stack(self, level=-1, dropna=True),对于普通的DataFrame而言,直接列索引转换到最内层行索引,生一个Series对象。对于层次化索引的DataFrame而言,可以将指定的索引层转换到行上,默认是将最内层的列索引转换到最内层行。
  • unstack函数:pandas.DataFrame.unstack(self, level=-1, fill_value=None),对于普通的DataFrame而言,直接将列索引转换到行索引的最外层索引,生成一个Series对象,对于层次化索引的DataFrame而言,和stack函数类似,似乎把两层索引当作一个整体,当level为列表时报错。
  • melt函数:pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None),id_vars可以理解为结果需要保留的原始列,value_vars可以理解为需要列转行的列名;var_name把列转行的列变量重新命名,默认为variable;value_name列转行对应变量的值的名称。

行转列方法

  • unstack函数:pandas.DataFrame.unstack(self, level=-1, fill_value=None)

 

练习pandas的主要的基本函数的使用。

实操

1.打开终端模拟器,在命令行输入ipython notebook --ip='127.0.0.1',点击New,在其下拉框中选择Python3.

2.新建一个ipynb文件,用于编写并执行代码。

3.创建一个DataFrame,名为df。

import numpy as np  
import pandas as pd  
df = pd.DataFrame({'A':np.random.randint(1, 100, 4),'B':pd.date_range(start='20130101', periods=4, freq='D'),'C':pd.Series([1, 2, 3, 4],index=['zhang', 'li', 'zhou', 'wang'],dtype='float32'),'D':np.array([3] * 4,dtype='int32'), 'E':pd.Categorical(["test","train","test","train"]),'F':'foo'})  
df  

 

4.二维数据查看

df.head()    # 默认显示前5行  
df.head(3)  # 查看前3行  
df.tail(2)  # 查看最后2行  

 

5.查看二维数据的索引、列名和数据。

6.查看数据的统计信息

df.describe()   # 平均值、标准差、最小值、最大值等信息  

 

7.二维数据转置

8.排序

df.sort_index(axis=0, ascending=False)     # 对索引进行降序排序  
df.sort_index(axis=0, ascending=True)      # 对索引进行升序排序  
df.sort_index(axis=1, ascending=False)     # 对列名进行降序排序  
df.sort_values(by='A')                     # 对A列的值进行升序排序  

 

9.重复值处理

检测重复行

返回新数组,删除重复行

删除k1列的重复数据,保留首行重复数据。

删除k1列的重复数据,保留末行重复数据。

10.映射

使用函数进行映射,将data中k1列的值转换为大写。

data['k1']=data['k1'].map(str.upper)  
data  

 

使用字典表示映射关系,将data中k1列的值转换为小写。

data['k1']=data['k1'].map({'ONE':'one','TWO':'two'})  
data  

 

使用lambda表达式表示映射关系,将data中k2列的值加5。

data['k2'] = data['k2'].map(lambda x:x+5)  
data   

 

使用lambda表达式表示映射关系,将data中索引的值加5。

data.index = data.index.map(lambda x:x+5)  
data  

 

使用lambda表达式表示映射关系,将data中列名转换为大写。

data.columns=data.columns.map(str.upper)  
data  

11.数据离散化

按category对data数据进行切分,使得参数right=False形成左闭右开区间。

按category对data数据进行切分,使得参数right=False形成左闭右开区间,并对每个区间打标签。

对data数据按4分位进行切分。

12.频次统计与移位

将df数据通过copy方法赋值为df1,然后对df1数据使用shift方法下移一行(负数表示上移)。

df1=df.copy()  
df1.shift(1)  

 

对df1中D列数据进行直方图统计。

13.透视转换

将df的a列值作为索引,b列值作为列名,c列值作为值,构建透视图。

将df的a列值作为索引,b列值作为列名,d列值作为值,构建透视图。

14.数据差分

新建数据帧名为df。

df = pd.DataFrame({'a':np.random.randint(1, 100, 10),'b':np.random.randint(1, 100, 10)},index=map(str, range(10)))  
df  

 

对df的行进行一阶差分

df.diff()   

 

对df的列进行一阶差分

df.diff(axis=1)  

 

对df的行进行二阶差分。

df.diff(periods=2)  

 

15.计算相关系数

新建一个DataFrame名为df。

df = pd.DataFrame({'A':np.random.randint(1, 100, 10),'B':np.random.randint(1, 100, 10),'C':np.random.randint(1, 100, 10)})  

 

计算df的相关系数, pearson相关系数.

计算df的相关系数, Kendall相关系数.

计算df的相关系数, spearman秩相关.

16.重塑Reshaping

新进一个DataFrame,为名df,将df的前4行赋值给df2.

tuples = list(zip(*[['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]))  
index = pd.MultiIndex.from_tuples(tuples, names=['A', 'B'])  
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B'])  
df2 = df[:4]  
df2  

 

使用stack方法对df2进行列转行,将结果返回给stacked.

使用unstack方法对stacked进行行转列,默认level=2,解压最内层。

使用unstack方法对stacked进行列转行,设置level=1,解压中间层。

使用unstack方法对stacked进行列转行,默认level=0,解压最外层。

使用unstack方法对stacked进行列转行,默认level=‘A’,解压最外层。

melt函数:将DataFrame的列转行。

新建一个DataFrame,名为df.

使用melt函数,将df进行列转行操作,保留A,C两个原始列,将B,D两列进行列转行,将列转行的列变量重新命名为B|D,列转行对应变量的值的名称命名为B|D_value 。

17.sub函数:截取DataFrame中的行或列。

新建一个DataFrame,名为df

#新建一个DataFrame  
df=pd.DataFrame({ 'one' : pd.Series(np.random.randn(3), index=['a', 'b', 'c']),'two' : pd.Series(np.random.randn(4), index=['a', 'b', 'c', 'd']),'three' : pd.Series(np.random.randn(3), index=['b', 'c', 'd'])})  
print(df)  

 

取df中索引为1的行,赋值给row,取列名为two的列赋值给column,使用sub方法将df的row行截取掉,axis='columns'或1。

#取df中索引为1的行,赋值给row  
row=df.iloc[1]  
#取列名为two的列赋值给column  
column=df['two']  
#使用sub方法将df的row行截取掉,axis='columns'或1。  
df.sub(row,axis='columns')  

 

使用sub方法将df的column列截取掉,axis='index'或0。

18.删除操作

删除指定行,返回一个删除后的DataFrame,对原始DataFrame不做改变。

data = pd.DataFrame({'k1':['one'] * 3 + ['two'] * 4,'k2':[1, 1, 2, 3, 3, 4, 4]})  
data  
data.drop(5,axis=0)  

 

删除指定行,对data本身进行删除操作。

data.drop(3,inplace=True)  
data  

 

删除指定列,返回一个删除后的DataFrame,对原始DataFrame不做改变。

猜你喜欢

转载自blog.csdn.net/ITYTI/article/details/86477967