Python之Pandas

**

Python之Pandas

**
一、Pandas简介
Pandas这个名字本身源自panel data(面板数据,这是计量经济学中关于多维结构化数据集的一个术语)以及Python data analysis。

Pandas是Python进行数据分析的基础包,基于Numpy构建的,让以Numpy为中心的应用变的简单。

Pandas提供了我们能够快速便捷地处理结构化数据的大量数据结构函数,是使python成为强大而高效的数据分析环境的重要因素之一。

Pandas纳入了大量库和一些标准数据模型,提供了高效地操作大型数据集所需的工具。

Pandas的主要功能及特点
1. 具备按轴自动或显示数据对齐功能的数据结构。这可以防止许多由于数据未对齐及来自不同数据源(索引方式不同)的数据而导致的常见错误。
2. 集成时间序列功能。
3. 既能处理时间序列数据也能处理非时间序列数据的数据结构。
4. 数学运算和越简(比如对某个轴求和)可以根据不同的元数据(轴编号)执行。
5. 灵活处理却是数据。
6. 合并及其他出现在常见数据库(如基于SQL的)中的关系型运算。

二、Pandas的数据结构介绍

1. Series
Series:一维数组,由一组数据及一组与之相关的数据标签(即索引)组成

与Numpy中的一维array类似,二者与Python基本的数据结构List也很相近,其区别是: List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
这里写图片描述
这里写图片描述

如果保存在Python字典里也可直接通过这个字典创建Series。
这里写图片描述

pd.Series(my_list): 从可迭代对象my_list创建一个Series对象
df.index = pd.date_range(‘1900/1/30’, eriods=df.shape[0]): 增加一个日期索引

注意:
1)Pandas的isnull和notnull函数均可用于检测缺失数据。
pd.isnull(obj)
pd.notnull(obj)

2)Series对象本身及其索引都有一个name属性,该属性与pandas其他的关键功能关系密切。
这里写图片描述

3)Series的索引可以通过赋值方式修改。
这里写图片描述

2. Time- Series
Time- Series:以时间为索引的Series。

3. DataFrame
DataFrame:二维的表格型数据结构。DataFrame既有行索引也有列索引,可被看作由Series组成的字典,可以将DataFrame理解为Series的容器。

1)可以输入给DataFrame构造器的数据
构建DataFrame最常用的方法:直接传入一个由等长列表或Numpy数组组成的字典
这里写图片描述

2)简单的创建方式
这里写图片描述

pd.DataFrame(np.random.rand(20,5)):
创建20行5列的随机数组成的DataFrame对象

这里写图片描述

4. Panel
三维的数组,可以看作DataFrame的容器。

三、数据选取或索引

1.DataFrame数据索引
df[col]:根据列名,以Series形式返回列
df[col1, col2]:以DataFrame形式返回多列

df.ix[val]:选取DataFrame的单个行或一组行
df.ix[:, val]:选取单个列或列子集
df.ix[val1, val2]:同时选取行或列

df.reindex方法:将一个或多个轴匹配到新索引

df.xs方法:根据标签选取单行或单列,并返回一个Series

df.iloc[0, :]:返回第一行
df.iloc[0, 0]:返回第一列的第一个元素

df.icol、df.irow方法:根据整数位置选取选取单列或单行,并返回一个Series
df.get_value、df.set_value方法:根据行标签和列标签选取单个值

2.Series数据索引
s.iloc[0]:按位置选取数据
s.loc[‘index_one’]:按索引选取数据

四、查看检查数据
1.DataFrame
df.head(n):查重点内容看DataFrame对象的前n行
df.tail(n):查看DataFrame对象的最后n行
df.shape():查看行数和列数
df.info():查看索引、数据类型和内存信息
df.describe():查看数值型列的汇总统计
df.apply(pd.Series.value_counts):查看DataFrame对象中每一列的唯一值和计数

2.Series
s.value_counts(dropna=False):查看Series对象的唯一值和计数

五、汇总和计算描述
1. 约简方法的选项
这里写图片描述

例如:
这里写图片描述
这里写图片描述
这里写图片描述

2.描述和汇总统计
这里写图片描述
这里写图片描述

3.相关系数
df.corr():返回列与列之间的相关系数

六、唯一值\值计数及成员资格
这里写图片描述

例如:
1.unique
这里写图片描述
这里写图片描述

2.value_counts
这里写图片描述
这里写图片描述

3.isin:判断矢量化集合的成员资格,可用于选取Series或DataFrame列中的数据子集
这里写图片描述

七、数据清理
1. Pandas:
pd.isnull():检查DataFrame对象中的空值,并返回一个Boolean数组
pd.notnull():检查DataFrame对象中的非空值,并返回一个Boolean数组

2. DataFrame
df.columns = [‘a’,’b’,’c’]:重命名列名
df.dropna():删除所有包含空值的行
df.dropna(axis=1):删除所有包含空值的列
df.dropna(axis=1,thresh=n):删除所有小于n个非空值的行
df.fillna(x):用x替换DataFrame对象中所有的空值
df.rename(columns=lambda x: x + 1):批量更改列名
df.rename(columns={‘old_name’: ‘new_ name’}):选择性更改列名
df.set_index(‘column_one’):更改索引列
df.rename(index=lambda x: x + 1):批量重命名索引

3.Series
s.astype(float):将Series中的数据类型更改为float类型
s.replace(1, ‘one’):用‘one’ 代替所有等于1的值
s.replace([1, 3],[‘one’, ‘three’]):用’one’代替1,用’three’代替3

八、数据处理
1.Filter、Sort、GroupBy

df[df[col] > 0.5]:选择col列的值大于0.5的行

df.sort_values(col1):按照列col1排序数据,默认升序排列
df.sort_values(col2, ascending=False):按照列col1降序排列数据
df.sort_values([col1,col2], ascending=[True,False]):先按列col1升序排列,后按col2降序排列数据

df.groupby(col):返回一个按列col进行分组的Groupby对象
df.groupby([col1,col2]):返回一个按多列进行分组的Groupby对象
df.groupby(col1)[col2]:返回按列col1进行分组后,列col2的均值
df.groupby(col1).agg(np.mean):返回按列col1分组的所有列的均值

df.pivot_table(index=col1, values=[col2,col3], aggfunc=max):创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表

data.apply(np.mean):对DataFrame中的每一列应用函数np.mean
data.apply(np.max,axis=1):对DataFrame中的每一行应用函数np.max

2.数据合并
1)DataFrame之间

  • df1.append(df2):将df2中的行添加到df1的尾部
  • df.concat([df1, df2],axis=1):将df2中的列添加到df1的尾部
  • df1.join(df2,on=col1,how = ‘inner’):对df1的列和df2的列执行SQL形式的join

2)pandas的内置方法

  • pandas.merge:可根据一个或多个键将不同DataFrame中的行连接起来。
    Eg:pd.merge(df1, df2, on = ‘key’, how = ‘left’)
    pd.merge(df1, df2, on = [‘key1’, ‘key2’], how = ‘outer’)

merge函数的参数:
这里写图片描述
这里写图片描述

  • pandas.concat:可以沿着一个轴将多个对象堆叠倒一起。
    这里写图片描述

    这里写图片描述

九、导入数据与导出数据

1.导入数据:
pd.read_CSV(filename):从CSV文件导入数据
pd.read_table(filename):从限定分隔符的文本文件导入数据
pd.read_excel(filename):从Excel文件导入数据
pd.read_sql(query, connection_object):从SQL表/库导入数据
pd.read_json(json_string):从JSON格式的字符串导入数据
pd.read_html(url):解析URL、字符串或者HTML文件,抽取其中的tables表格
pd.read_clipboard():从你的粘贴板获取内容,并传给read_table()
pd.DataFrame(dict):从字典对象导入数据, Key是列名, Value是数据

read_csv \ read_table函数的参数:
这里写图片描述
这里写图片描述
这里写图片描述
2.导出数据:
df.to_csv(filename):导出数据到CSV文件
df.to_excel(filename):导出数据到Excel文件
df.to_sql(table_name, connection_object):导出数据到SQL表
df.to_json(filename):以Json格式导出数据到文本文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值