相关知识
列转行方法
- 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列的值进行升序排序