编程实践(Pandas) Task02

一、文件的读取和写入

excel csv txt
文件读取 pd.read_excel() pd.read_csv() pd.read_table()
数据写入 to_excel() to_csv() to_csv()

1. 文件读取

  • csv文件读取:pd.read_csv

pandas.read_csv(filepath_or_buffer, sep=’,’, delimiter=None, header=‘infer’, names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, cache_dates=True, iterator=False, chunksize=None, compression=‘infer’, thousands=None, decimal=’.’, lineterminator=None, quotechar=’"’, quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

df_csv = pd.read_csv("Data/my_csv.csv")
df_csv

	col1	col2	col3	col4	col5
0	2		a		1.4		apple	2020/1/1
1	3		b		3.4		banana	2020/1/2
2	6		c		2.5		orange	2020/1/5
3	5		d		3.2		lemon	2020/1/7
  • txt文件读取:pd.read_table

pandas.read_table(filepath_or_buffer, sep=’\t’, delimiter=None, header=‘infer’, names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, cache_dates=True, iterator=False, chunksize=None, compression=‘infer’, thousands=None, decimal=’.’, lineterminator=None, quotechar=’"’, quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

df_txt = pd.read_table('data/my_table.txt')
df_txt


	col1	col2	col3	col4
0	2		a		1.4		apple 2020/1/1
1	3		b		3.4		banana 2020/1/2
2	6		c		2.5		orange 2020/1/5
3	5		d		3.2		lemon 2020/1/7
  • excel文件读取:pd.read_excel

pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, mangle_dupe_cols=True)

df_excel = pd.read_excel('data/my_excel.xlsx')
df_excel

	col1	col2	col3	col4	col5
0	2		a		1.4		apple	2020/1/1
1	3		b		3.4		banana	2020/1/2
2	6		c		2.5		orange	2020/1/5
3	5		d		3.2		lemon	2020/1/7
  • 公共参数:
类型 参数定义
header int, list of int, default 0 指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None;
index_col int, list of int, default None 用作行索引的列编号或者列名,如果给定一个序列则有多个行索引
usecols int, str, list-like, or callable default None 返回一个数据子集,该列表中的值必须可以对应到文件中的位置(数字可以对应到指定的列)或者是字符传为文件中的列名。
names array-like, default None 指定列的名字,传入一个list数据
skiprows list-like 省略指定行数的数据
skipfooter int, default 0 省略从尾部数的行数据
  • 单独参数
参数定义
sep 指定分隔符。如果不指定参数,则会尝试使用逗号分隔。参数 sep 中使用的是正则表达式,因此需要进行转义,否则无法读取到正确的结果。
pd.read_table('data/my_table_special_sep.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?
# 使用 read_table 的时候需要注意,参数 sep 中使用的是正则表达式,因此需要对 | 进行转义变成 \| ,否则无法读取到正确的结果。
# 指定引擎为 python,否则会出现警告
pd.read_table('data/my_table_special_sep.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?

2. 文件写入

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

  • csv文件 / txt文件写入

DataFrame.to_csv(path_or_buf=None, sep=’,’, na_rep=’’, float_format=None, columns=None, header=True, index=True, index_label=None, mode=‘w’, encoding=None, compression=‘infer’, quoting=None, quotechar=’"’, line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal=’.’, errors=‘strict’)

  • excel文件写入

DataFrame.to_excel(excel_writer, sheet_name=‘Sheet1’, na_rep=’’, float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep=‘inf’, verbose=True, freeze_panes=None)

df_csv.to_csv('data/my_csv_saved.csv', index=False)
df_excel.to_excel('data/my_excel_saved.xlsx', index=False)
df_txt.to_csv('data/my_txt_saved.txt', sep='\t', index=False)

为什么要转化markdown语言,主要是为了方便保存,且易于转成其他格式,比如PDF,也能方便出版打印和交流传播

to_markdown: 表格转换为markdown语言
to_latex:可表格转换为to_latex语言
没有安装tabulate包,要先pip install tabulate

二、基本数据结构

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')
属性
.values 获取序列的值
.index 获取索引
.dtype 获取存储类型
.name 获取名字
.shape 获取序列的长度

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'])

#更多的时候会采用从列索引名到数据的映射来构造数据框,同时再加上行索引
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)])

属性与Series相同,转置可以用.T,这点同numpy的用法

三、常用基本函数

1. 汇总函数

函数 属性
.head() 返回表或者序列的前 n 行,默认为5
.tail() 返回表或者序列的后n行,默认为5
.info() 返回表的信息概况
.describe() 返回表中数值列对应的主要统计量

info, describe 只能实现较少信息的展示,如果想要对一份数据集进行全面且有效的观察,特别是在列较多的情况下,推荐使用 pandas-profiling 包。

df.head() #返回表或序列的前5行

		School							Grade		Name			Gender	Height	Weight	Transfer
0		Shanghai Jiao Tong University	Freshman	Gaopeng Yang	Female	158.9	46.0	N
1		Peking University				Freshman	Changqiang You	Male	166.5	70.0	N
2		Shanghai Jiao Tong University	Senior		Mei Sun			Male	188.9	89.0	N
3		Fudan University				Sophomore	Xiaojuan Sun	Female	NaN		41.0	N
4		Fudan University				Sophomore	Gaojuan You		Male	174.0	74.0	N
df.head(2) #返回表或序列的前2行

	School							Grade		Name			Gender	Height	Weight	Transfer
0	Shanghai Jiao Tong University	Freshman	Gaopeng Yang	Female	158.9	46.0	N
1	Peking University				Freshman	Changqiang You	Male	166.5	70.0	N
df.tail(1) #返回表或序列的最后1行

	School				Grade		Name		Gender	Height	Weight	Transfer
199	Tsinghua University	Sophomore	Chunpeng Lv	Male	155.7	51.0	N
df.info() #返回表的信息概况

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 200 entries, 0 to 199
Data columns (total 7 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   School    200 non-null    object 
 1   Grade     200 non-null    object 
 2   Name      200 non-null    object 
 3   Gender    200 non-null    object 
 4   Height    183 non-null    float64
 5   Weight    189 non-null    float64
 6   Transfer  188 non-null    object 
dtypes: float64(2), object(5)
memory usage: 11.1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值