目录
1 文件的创建
-
可创建的文件类型
数据类型 说明 新建方法 csv、tsv、txt 用逗号、tab分割的纯文本文件 pd.to_csv(路径) excel xls或xlsx pd.to_excel(路径) sql 关系数据库表 pd.to_sql(路径) -
【例子1】新建文件并导入数据
import pandas as pd path = 'd:/新建文件.xlsx' # 文件创建的路径 # 文件中要输入的数据,excel表格用字典,以键值对的形式 value = { '序号':[1,2,3],'姓名':['张三','李四','王五']} # DATaFrame指二维数据表,可能用的series指一维数据(可行可列),不是一维数组 data=pd.DataFrame(value) # DataFrame()中也可没数据,那就是创建一个空的 data.to_excel(path) # 将数据写入创建的文件中
注意:第一列的序号是索引,它不索引列名
- 【例子2】将序号设为索引
import pandas as pd path = 'd:/新建文件.xlsx' value = { '序号':[1,2,3],'姓名':['张三','李四','王五']} data=pd.DataFrame(value) data=data.set_index('序号') # 将序号设置为索引 data.to_excel(path)
2 文件读取
2.1 文件读取
-
文件的读取:
数据类型 说明 读取方法 csv、tsv、txt 默认用逗号分隔 pd.read_csv(路径) csv、tsv、txt 默认用\t分隔 pd.read_table(路径) excel xls或xlsx pd.read_excel(路径) sql 关系数据库表 pd.read_sql(路径) -
文件的查看:
- 查看数据的形状,返回(行数,列数):
print(读取数据.shape)
- 查看数据内容:
print(读取数据.values)
- 查看列名列表:
print(读取数据.columns)
- 查看索引列:
print(读取数据.index)
- 查看每一列数据类型:
print(读取数据.dtypes)
- 查看数据的形状,返回(行数,列数):
-
读取csv/tsv/txt/excel文件的公共参数:
参数 描述 header 列名的行号,默认0(第一行),没有列名为 header=None
names 自定义的表头,与 header=None
一起使用index_col 把哪几列作为索引,可以是列名或列号 usecols 读取列的集合,默认读取所有列 skipcrows 从文件开始处,需要跳过的行数或行号列表 encoding 文本编码,常用utf-8 nrows 从文件开头读入的行数 parse_dates 需要转化为时间的列 【例子1】自定义表头,并读取前两列、前三行的数据
a=pd.read_table('data/my_table.txt', header=None,names=['a','b','c','d'],usecols=['a','b'],nrows=3) print(a) /* a b 0 col1 col2 1 2 a 2 3 b */
【例子2】将col1和col3作为索引
b=pd.read_table('data/my_table.txt',index_col=['col1','col3']) print(b) /* col2 col4 col1 col3 2 1.4 a apple 2020/1/1 3 3.4 b banana 2020/1/2 6 2.5 c orange 2020/1/5 5 3.2 d lemon 2020/1/7 */ ```
-
读取txt/csv/tsv文件:
当遇到分隔符不是逗号和\t时,可以使用sep
参数,来自定义分隔符。
【例子】import pandas as pd a=pd.read_table('data/my_table_special_sep.txt',sep='\|\|\|\|',engine='python',index=Flase) print(a) /* col1 col2 0 TS This is an apple. 1 GQ My name is Bob. 2 WT Well done! 3 PT May I help you? */ ```
注意:
sep
中使用的是正则表达式,同时需要指定引擎为 python 。
2.2 文件转换
- txt文件转csv文件
特别当索引没有特殊意义的时候,在保存的时候把index
设置为False
。
转换方法:数据=pd.read_csv('文件路径.txt') 数据.to_csv('文件路径.csv',index=False)
- 表格转markdown和latex:以使用
to_markdown
和to_latex
函数,此处需要安装tabulate
包。
【例子】rint(df_csv.to_markdown())
3 基本数据结构
pandas
中具有两种基本的数据存储结构,存储一维 values
的Series
和存储二维values
的 DataFrame
。
3.1 Series
- 含义:一维数据,一行或一列数据
- 常用参数:序列的值:
data
,索引:index
,存储类型:dtype
,序列的名字:name
。
【例子】a=pd.Series(data=[1,'b',{ 'c':2}], index=[0,1,2], dtype='object', name='my_name') print(a) /* 0 1 1 b 2 { 'c': 2} Name: my_name, dtype: object */
注意:
object
代表了一种混合类型,目前 pandas 把纯字符串序列也默认认为是一种 object 类型的序列,但它也可以用 string 类型存储。 - 常用查询方法:
- 数据.index:查看索引
# Index(['id1', 20, 'third'], dtype='object', name='my_idx')
- 数据.values:查看索引
# array([100, 'a', {'dic1': 5}], dtype=object)
- 数据.isnull():查看索引
- 数据.notnull():查看索引
- 数据.sort_index():按索引排序
- 数据.sort_values():按数值排序
- 数据.index:查看索引
3.2 DataFrame
- 含义:两维数据,多行多列,由多个
series
构成,在Series
的基础上增加了列索引。 - 特点:既有行索引
index
,也有列索引columns
。 - 使用方法:
- 1 二维数据与行列索引:
data = [[0, 'a', 1.0], [1, 'b', 2.1], [2, 'c', 3.2]] df=pd.DataFrame(data=data, index=['row_%d'%i for i in range(3)], columns=['col_0','col_1','col_2']) print(df) /* col_0 col_1 col_2 row_0 0 a 1.0 row_1 1 b 2.1 row_2 2 c 3. */
- 2 从列索引名 到数据的映射来构造数据框,同时再加上行索引:
dir={ '姓名':['张三','李四','王五'], '年龄':[1,2,3], '性别':['男','女','女'] } df=pd.DataFrame(data=dir, index=['row_%d'%i for i in range(3)]) print(df) print(df['姓名']) # 取出相应列,Series print(df[['姓名','年龄']]) # 取出多个列构成的表,DataFrame /* 姓名 年龄 性别 row_0 张三 1 男 row_1 李四 2 女 row_2 王五 3 女 row_0 张三 row_1 李四 row_2 王五 Name: 姓名, dtype: objec 姓名 年龄 row_0 张三 1 row_1 李四 2 row_2 王五 3 */
注意:在
DataFrame
中可以用[col_name]
与[col_list]
来取出相应的列与由多个列组成的表,结果分别为Series
和DataFrame.
3 常用基本函数
3.1 汇总函数
- head(),tail():表示返回表或者序列的前 n 行和后 n 行,其中 n 默认为5。
- info(),describe():返回表的 信息概况 和表中 数值列对应的主要统计量
注意:
info
,describe
只能实现较少信息的展示
3.2 特征统计函数
- 常见的函数():
sum
,mean(平均值)
,median(中值)
,var(方差)
,std(均方差)
,max
,min
- quantile(),count(),idxmax():分别返回分位数、非缺失值个数、最大值对应索引。(分位数指将一个随机变量的概率分布范围分为几个等份的数值点)
【例子】path='data/learn_pandas.csv' df=pd.read_csv(path) df_demo = df[['Height',