列转行方法
行转列方法
练习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不做改变。