Datawhale Pandas Task02 Pandas基础

本文介绍了Pandas库中文件的读取和写入,包括csv、excel和txt格式,强调了常用参数如header、index_col、usecols等。接着详细讲解了Series和DataFrame两种基本数据结构,以及基本函数的使用,如汇总函数、特征统计函数、唯一值函数、替换函数和排序函数。最后,简要提到了窗口对象,包括滑动窗口和扩张窗口的概念和应用。
摘要由CSDN通过智能技术生成

请保证 pandas 的版本号不低于1.1.5,否则请务必升级!

一、文件的读取和写入

1. 文件读取

pandas 可以读取的文件格式有很多,这里主要介绍读取 csv, excel, txt 文件。

df_csv = pd.read_csv('data/my_csv.csv')
df_txt = pd.read_table('data/my_table.txt')
df_excel = pd.read_excel('data/my_excel.xlsx')

这里有一些常用的公共参数:

  • header=None 表示第一行不作为列名
  • index_col 表示把某一列或几列作为索引,索引的内容将会在第三章进行详述
  • usecols 表示读取列的集合,默认读取所有的列
  • parse_dates 表示需要转化为时间的列,关于时间序列的有关内容将在第十章讲解
  • nrows 表示读取的数据行数。

上面这些参数在上述的三个函数里都可以使用。

pd.read_table('data/my_table.txt', header=None)
pd.read_csv('data/my_csv.csv', index_col=['col1', 'col2'])   #col1、2是列名
pd.read_table('data/my_table.txt', usecols=['col1', 'col2'])
pd.read_csv('data/my_csv.csv', parse_dates=['col5'])
pd.read_excel('data/my_excel.xlsx', nrows=2)

在读取 txt 文件时,经常遇到分隔符非空格的情况, read_table 有一个分割参数 sep ,它使得用户可以自定义分割符号,进行 txt 数据的读取。例如,下面的读取的表以 |||| 为分割:

df_table = pd.read_table("../untitled.txt")

	col1 |||| col2
0	TS |||| This is an apple.
1	GQ |||| My name is Bob.
2	WT |||| Well done!
3	PT |||| May I help you?
df_table1 = pd.read_table("../untitled.txt", sep="\|\|\|\|", engine="python")

   col1	col2
0	TS	This is an apple.
1	GQ	My name is Bob.
2	WT	Well done!
3	PT	May I help you?

这里注意,engine如果不设置为“python”会爆出警报:‘c’ engine does not support regex separators

另外,在使用 read_table 的时候需要注意,参数 sep 中使用的是正则表达式,因此需要对 | 进行转义变成 “\|”,否则无法读取到正确的结果。有关正则表达式的基本内容可以参考第八章或者其他相关资料。

2. 数据写入

一般在数据写入中,最常用的操作是把 index 设置为 False ,特别当索引没有特殊意义的时候,这样的行为能把索引在保存的时候去除。

df_csv.to_csv('data/my_csv_saved.csv', index=False)
df_excel.to_excel('data/my_excel_saved.xlsx', index=False)

pandas 中没有定义 to_table 函数,但是 to_csv 可以保存为 txt 文件,并且允许自定义分隔符,常用制表符 \t 分割(8个空格):

df_txt.to_csv('data/my_txt_saved.txt', sep='\t', index=False)

如果想要把表格快速转换为 markdown 和 latex 语言,可以使用 to_markdown 和 to_latex 函数,此处需要安装 tabulate 包。

df_csv.to_markdown()
df_csv.to_latex()

二、基本数据结构

pandas 中具有两种基本的数据存储结构,存储一维 values 的 Series 和存储二维 values 的 DataFrame ,在这两种结构上定义了很多的属性和方法。

1. Series

Series 一般由四个部分组成,分别是序列的值 data 、索引 index 、存储类型 dtype 、序列的名字 name 。其中,索引也可以指定它的名字,默认为空。

s = pd.Series(data = [100, 'a', {'dic1':5}],
              index = pd.Index(['id1', 20, 'third'], name='my_idx'),
              dtype = 'object',
              name = 'my_name')
my_idx
id1              100
20                 a
third    {'dic1': 5}
Name: my_name, dtype: object

object类型:
object 代表了一种混合类型,正如上面的例子中存储了整数、字符串以及 Python 的字典数据结构。此外,目前 pandas 把纯字符串序列也默认认为是一种 object 类型的序列,但它也可以用 string 类型存储,文本序列的内容会在第八章中讨论。

对于这些属性,可以通过 . 的方式来获取:

s.values
array([100, 'a', {'dic1': 5}], dtype=object)

s.index
Index(['id1', 20, 'third'], dtype='object', name='my_idx')

s.dtype
dtype('O')

s.name
'my_name'

利用 .shape 可以获取序列的长度:

s.shape
(3,)

索引是 pandas 中最重要的概念之一,它将在第三章中被详细地讨论。如果想要取出单个索引对应的值,可以通过 [index_item] 可以取出。

s['third']
{'dic1': 5}

2. DataFrame

DataFrame 在 Series 的基础上增加了列索引,一个数据框可以由二维的 data 与行列索引来构造:

data = [[1, 'a', 1.2], [2, 'b', 2.2], [3, 'c', 3.2]]
df = pd.DataFrame(data = data,
                  index = ['row_%d'%i for i in range(3)],
                  columns=['col_0', 'col_1', 'col_2'])
	col_0	col_1	col_2
row_0	1	a	1.2
row_1	2	b	2.2
row_2	3	c	3.2

但一般而言,更多的时候会采用从列索引名到数据的映射来构造数据框,同时再加上行索引:

df = pd.DataFrame(data = {'col_0': [1,2,3], 'col_1':list('abc'),
                          'col_2': [1.2, 2.2, 3.2]},
                  index = ['row_%d'%i for i in range(3)])
	col_0 col_1	col_2
row_0	1	a	1.2
row_1	2	b	2.2
row_2	3	c	3.2

由于这种映射关系,在 DataFrame 中可以用 [col_name] 与 [col_list] 来取出相应的列与由多个列组成的表,结果分别为 Series 和 DataFrame :

 df['col_0']
row_0    1
row_1    2
row_2    3
Name: col_0, dtype: int64
df[['col_0', 'col_1']]

	 col_0 col_1
row_0	1	a
row_1	2	b
row_2	3	c

与 Series 类似,在数据框中同样可以取出相应的属性:

df.values
array([[1, 'a', 1.2],
       [2, 'b', 2.2],
       [3, 'c', 3.2]], dtype=object)
df.index
Index(['row_0', 'row_1', 'row_2'], dtype='object')
df.columns
Index(['col_0', 'col_1', 'col_2'], dtype='object')
df.dtypes   # 返回的是值为相应列数据类型的Series
col_0      int64
col_1     object
col_2    float64
dtype: object
df.shape
(3, 3)

通过 .T 可以把 DataFrame 进行转置:

df.T
	 row_0	row_1	row_2
col_0	1	2	      3
col_1	a	b	      c
col_2	1.2	2.2	     3.2

三、常用基本函数

为了进行举例说明,在接下来的部分和其余章节都将会使用一份 learn_pandas.csv 的虚拟数据集,它记录了四所学校学生的体测个人信息。

df = pd.read_csv('data/learn_pandas.csv')

df.columns
Index(['School', 'Grade', 'Name', 'Gender', 'Height', 'Weight', 'Transfer',
       'Test_Number', 'Test_Date', 'Time_Record'],
      dtype='object')

上述列名依次代表学校、年级、姓名、性别、身高、体重、是否为转系生、体测场次、测试时间、1000米成绩,本章只需使用其中的前七列。

df = df[df.columns[:7]]

1. 汇总函数

head, tail 函数分别表示返回表或者序列的前 n 行和后 n 行,其中 n 默认为5.

info, describe 分别返回表的 信息概况 和表中 数值列对应的主要统计量.
info, describe 只能实现较少信息的展示,如果想要对一份数据集进行全面且有效的观察,特别是在列较多的情况下,推荐使用 pandas-profiling 包,它将在第十一章被再次提到。

2. 特征统计函数

在 Series 和 DataFrame 上定义了许多统计函数,最常见的是 sum, mean, median, var, std, max, min 。例如,选出身高和体重列进行演示:

df_demo = df[['Height', 'Weight']]
df_demo.mean(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值