数据分析库pandas入门 1——Pandas基本数据结构、创建DataFrame对象、查看DataFrame和Series对象基本信息

Pandas 是一个开源的强大的数据分析工具集,其基础是 Numpy,提供了高性能、易使用的数据结构和数据分析工具。Pandas 名字来自“panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。Pandas 可以从各种文件格式(如: CSV、SQL、Excel 等等)导入数据并对各种数据进行操作(如:运算、归并、筛选等等),非常适用于数据清洗和数据加工。在人工智能等领域,往往需要对原始数据集进行预处理,这时候pandas将是十分称手的工具。
工欲善其事,必先利其器,本文以及接下来的一系列文章将对pandas库进行一些常用方面的介绍,作为梳理性的学习小结。

Pandas 基本数据结构

首先介绍 pandas 的基本数据结构:SeriesDateFrame 。其中,DataFrame 用来处理结构化数据(SQL数据表,Excel表格);Series 用来处理单列数据。可以把 DataFrame 看作由 Series 对象组成的字典或集合,Series 是一维的,表示 DataFrame 的一个列或者一个行。

创建 Series 对象

创建 Series 对象通常用pandas.Series(data, index, dtype, name, copy=False, fastpath=False)方法。
参数中,data是Series包含的数据,可以是一个列表、字典、array-like等;index是一个array-like或者一个Index对象,指定data的label,可以在创建Series对象或者DataFrame对象前先创建,若不指定则默认使用0、1、2……;dtype是data的数据类型;name是该Series的名字。示例如下:

import pandas as pd

series = pd.Series(['Wes McKinney','Male'], index = ['Name','Gender'])  # 创建一个Series对象,index以一个列表形式传入
idx1 = pd.Index(['Name','Gender'], name='index1')  # 先创建index,再传入下面的Series对象中
series = pd.Series(['Wes McKinney','Male'], index = idx1)

创建 DataFrame 对象

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每一列都可以是不同的值类型(数值、日期、object类型),同一列必须是相同的类型。其中object类型可以保存任何python对象。
创建 DataFrame 对象通常用pandas.DataFrame(data, index, columns, dtype, copy=False)方法。
参数中,data可以是一个二维数组、字典或者DataFrame;index是一个Index或一维array-like对象,指定了行标签,默认使用0、1、2……;columns指定了列标签;dtype指定了data的数据类型。示例如下:

df = pd.DataFrame({'Name':['Tome','Bob'], 'Occupation':['Teacher','IT Engineer'], 'age':[28,36]})  # 从字典创建DataFrame,字典的keys就是DataFrame的columns列标签。

从文件中导入数据创建 DataFrame 对象

Pandas 支持从各种数据格式的文件中导入数据,创建DataFrame对象,比如:CSV、Excel、Json、pickle、html、feather、spss等等。当然,也可以把数据导出到文件中进行保存。这里简单介绍CSV文件和Excel文件。

从 CSV 文件导入

CSV(逗号分隔值)是数据协作和共享的首选格式。在CSV文件中,对于每一行,各列采用逗号分隔。除了逗号,还可以使用其他类型的分隔符,比如TSV文件,使用制表符作为分隔符。导入数据方法是:pandas.read_csv(),该方法有非常多的参数,常用的有filepath_or_buffer(csv文件的名字,可以带路径)、sep(分隔符,默认是逗号)、header(标题行)、names(给出了列名)、index_col(指定哪一列作为row labels)等。示例如下:

df_data = pd.read_csv('data/prizes.csv', index_col='id')      # 从csv文件导入数据,指定了索引
df_data.to_csv('output/df_noindex.csv', sep=',', index=False) # 将数据导出到csv文件,sep指定了分隔符,index为False表示不保存索引

从 Excel 文件导入

Excel 文件属于非常常见的数据文件了,读取Excel文件常用方法是:pandas.read_excel(),该方法也有很多参数,主要用到的是Excel文件名和sheet_name数据表单名。需要注意的是:该方法需要用到第三方包 xlrd和xlwt,前者读excel,后者写excel。示例如下:

df_data = pd.read_excel('data/sci.xlsx', sheet_name='data1')  # 从Excel文件导入数据
df_data.to_excel('output/df_noindex.xlsx', sheet_name='news1', index=False)  # 导出数据

查看 DataFrame 和 Series 对象基本信息

得到DataFrame或Series对象后就可以查看具体数据了,可以直接print打印显示出来,也可以使用DataFrame和Series对象的各种属性和方法进行查看,示例如下:

查看基本属性

# 查看DataFrame对象基本属性
df.index    # 查看所有行索引
df.columns  # 查看所有列名,同df.keys()方法
df.dtypes   # 查看各列数据类型
df.shape    # 查看行列数量,返回一个元组
df.ndim     # 查看数据维度
df.size     # 查看数据总个数
df.empty    # 查看数据是否为空,返回True或False
df.values   # 返回一个同shape的数据元素也相同的numpy.ndarray数组
df.info()   # 查看各列基本信息,如:列名、数据类型、行数量等

查看行数据

# 查看DataFrame的行数据
df[:2]           # 查看前2行数据
df[1:5]          # 查看第2到第5行,即下标为1到4。注意:不能用单个数字取单行!
df.loc['index']  # 查看单行数据,行名为'index'
df.loc[['index1','index2']]  # 查看多行数据,行名为'index1'和'index2'
df.iloc[n]       # 查看单行数据,下标为n
df.iloc[r1:r2]   # 查看多行数据,行下标从r1到r2(不含)
df.head(n=5)     # 查看前n(默认为5)行数据
df.tail(n=5)     # 查看最后n(默认为5)行数据
df.sample(n, frac, replace=False, weights, random_state, axis=0)
# 随机查看n行或者数量占比为frac的行;replace为False表示不改变原df;axis=0表示对行采样。若axis=1则表示对列采样,随机查看列数据。

查看列数据

# 查看DataFrame的列数据
df.col           # 查看单列数据,列名为col
df['col']        # 同上
df[['col1', 'col2']]  # 查看多列数据,列名为'col1'和'col2'
df.iloc[:, c1:c2]     # 查看多列数据,列下标从c1到c2(不含)
df.get(['col1', 'col2'], default=None)  # 查看名为'col1'和'col2'列的数据,若不存在则返回default值

查看单个数据

# 查看DataFrame的单个数据
df['col']['row']     # 查看行名为'row'列名为'col'的单个数据
df.at['row','col']   # 同上
df.loc['row','col']  # 同上
df['col'][-1]        # 查看列名为'col'的最后一个数据
df.iat[n_r, n_c]     # 查看行下标为n_r、列下标为n_c的单个数据
df.iloc[n_r, n_c]    # 同上

查看满足特点条件数据

# 查看DataFrame中满足特定条件的数据
df.query(expr, inplace=False, **kwargs)  # 参数expr是个运算表达式字符串,即满足的特点条件,如:"label1 > 3 and label2 < 5"、"column1 == @var_c"等等。
                                         # 参数inplace表示是否原地修改,默认是False,即返回一个符合条件的DataFrame或Series。

对应 Series 对象,它也有index、dtype、shape、ndim、size、values属性以及[ ]操作符和loc、iloc、at、iat、head、tail、get、sample方法,用法与DataFrame基本相同,但是它没有info和query方法。

以上。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值