查看电脑上pandas的版本号为1.1.5,如果pandas的版本较低,需要进行更新
import pandas as pd
pd.__version__
# 更新 pip install --upgrade pandas
一、文件读取和写入
1.1 文件读取
最常用的文件读取语句为pd.read_csv、pd.read_table、pd.read_excel
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 表示第一行不作为列名,当原始数据中第一行不是属性名称时使用该语句,同时采用如下语句在读取数据后设置列名称
df_csv.columns = ['col1', 'col2', 'col3', 'col4',' col5'] # 所有列名称都要写出来,否则会报错
- index_col 表示把某一列或几列作为索引
- usecols 表示读取列的集合,默认读取所有的列
- parse_dates 表示需要转化为时间的列
- nrows 表示读取的数据行数,nrows=2表示只读取前两行数据
读取txt文件时,会遇到分隔符非空格的情况,read_table 分割参数sep,可使用户自定义分割符号,进行txt数据的读取。
my_table_special_sep.txt 文件以||||为分割,不设置参数sep的值直接读取txt文档会奇奇怪怪,所以在读取此文件时需要使用:
pd.read_table('../data/my_table_special_sep.txt', sep=' \|\|\|\| ', engine='python') # 转义字符,指定引擎为python
1.2 数据写入
基于pandas的特殊结构,当索引为0、1、2、3……时,数据写入时一般将index设置为False
df_csv.to_csv('../data/my_csv_saved.csv', index=False) # 也可以保存txt文件
df_excel.to_excel('../data/my_excel_saved.xlsx', index=False)
pandas中没有定义to_table函数,采用to_csv可以保存为txt文件,允许自定义分隔符,常用制表符\t分割:
df_txt.to_csv('../data/my_txt_saved.txt', sep='\t', index=False)
二、基本数据结构
两种基本的数据存储结构:
- 存储一维values的Series
- 存储二维values的DataFrame
基于这两种数据结构可以进行很多的探索性分析(EDA),在拿到一份数据时,通常基于第二部分和第三部分的方法对数据进行EDA。
2.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')
索引Series的一些重要属性:
s.values
s.index
s.dtype
s.name
s.shape # 获取序列的长度
2.2 DataFrame
DataFrame 在 Series 的基础上增加了列索引,这种设计使得读取和处理数据变得很方法,以下是两种定义DataFrame的方式:
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
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)])
df
读取数据的几种方式:
df['col_0']
df.col_0
df[['col_0', 'col_1']]
df.iloc[:, 1] # 切片索引
df.loc[:, 'col_0']
索引DataFrame的一些重要属性:
s.values
s.index
s.dtype
df.columns # 获取DataFrame的列名
s.shape # 获取DataFrame的长度
DataFrame的转置:
df.T
三、常用基本函数
读取数据:
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')
如果数据有很多列,直接使用df.columns可能会输出不完整,看不到全部的列,可用 df.columns.tolist() 命令
3.1 汇总函数
head, tail 函数分别表示返回表或者序列的前n行和后n行,其中n默认为5:
df.head(2) # 输出前两行
df.tail(2) # 输出后两行
df.info() # 查看数据的基本信息,也可以看数据的类型,以及数据中是否有缺失值
df.describe() # 对表格中的数值列进行统计描述
df.describe() 只会对数据中的数值型数据进行描述统计。
3.2 特征统计函数
最常用的是 sum, mean, median, var, std, max, min
df_demo = df[['Height', 'Weight']] # 取出数据中的身高、体重
df_demo.mean() # 输出身高和体重的均值
df_demo.max() # 输出身高和体重的最大值
df_demo.quantile(0.75)
df_demo.count()
df_demo.idxmax()