python 数据分析--数据处理工具Pandas(1)

jzlixiao 2020-04-09

说明: 本文用到的数据集下载地址: 
链接:https://pan.baidu.com/s/1zSOypUVoYlGcs-z2pT2t0w 提取码:z95a

Pands模块可以帮助数据分析师轻松地解决数据的预处理问题,如数据类型的转换、缺失值的处理、描述性统计分析、数据的汇总等。Pandas模块的核心操作对象就是序列(Series)和数据框(DataFrame)。序列可以理解为数据集中的一个字段,数据框是指含有至少两个字段(或序列)的数据集。

1. 序列和数据框的构造

1.1 构造序列

构造一个序列可以使用如下方式实现:

  • 通过同质的列表或元组构建。
  • 通过字典构建。
  • 通过Numpy中的一维数组构建。
  • 通过数据框DataFrame中的某一列构建
import pandas as pd
import numpy as np

# 列表(元组)构造序列
gdp1 = pd.Series([2.8,3.01,8.99,8.2,2.58])
print(gdp1)

# 字典构造序列
gdp2 = pd.Series({"北京":2.8,"上海":3.01,"广东":8.99,"浙江":8.2,"重庆":2.58})
print(gdp2)

# Numpy一维数组构建
gdp3 = pd.Series(np.array([2.8,3.01,8.99,8.2,2.58]))
print(gdp3)


# 数据框DataFrame
df = pd.DataFrame([2.8,3.01,8.99,8.2,2.58],[2.8,3.01,8.99,8.2,2.58])
gdp4 = pd.Series(df[0])
print(gdp4)
0    2.80
1    3.01
2    8.99
3    8.20
4    2.58
dtype: float64
上海    3.01
北京    2.80
广东    8.99
浙江    8.20
重庆    2.58
dtype: float64
0    2.80
1    3.01
2    8.99
3    8.20
4    2.58
dtype: float64
2.80    2.80
3.01    3.01
8.99    8.99
8.20    8.20
2.58    2.58
Name: 0, dtype: float64

1.2 构造数据框

数据框实质上就是一个数据集,数据集的行代表每一条观测,数据集的列则代表各个变量。在一个数据框中可以存放不同数据类型的序列,如整数型、浮点型、字符型和日期时间型,而数组和序列则没有这样的优势,因为它们只能存放同质数据。构造一个数据库可以应用如下方式:

  • 通过嵌套的列表或元组构造。
  • 通过字典构造。
  • 通过二维数组构造。
  • 通过外部数据的读取构造。
import pandas as pd 
import numpy as np

# 嵌套列表
df1 = pd.DataFrame([[‘张三‘,‘female‘,2001,‘"北京‘],[‘李四‘,‘female‘,2001,‘上海‘],[‘王五‘,‘male‘,2003,‘广州‘]])
print(df1)

# 字典
data = {
    "name":["张三","李四","王五"],
     "sex":["female","female","male"],
     "year":[2001,2001,2003],
     "city":["北京","上海","广州"] 
}
df2 = pd.DataFrame(data)
print(df2)


# 二维数组
arr = np.array([[‘张三‘,‘female‘,2001,‘"北京‘],[‘李四‘,‘female‘,2001,‘上海‘],[‘王五‘,‘male‘,2003,‘广州‘]])
print(arr)
df3 = pd.DataFrame(arr)
print(df3)

#外部读取
# 见下面
0       1     2    3
0  张三  female  2001  "北京
1  李四  female  2001   上海
2  王五    male  2003   广州
  city name     sex  year
0   北京   张三  female  2001
1   上海   李四  female  2001
2   广州   王五    male  2003
[[‘张三‘ ‘female‘ ‘2001‘ ‘"北京‘]
 [‘李四‘ ‘female‘ ‘2001‘ ‘上海‘]
 [‘王五‘ ‘male‘ ‘2003‘ ‘广州‘]]
    0       1     2    3
0  张三  female  2001  "北京
1  李四  female  2001   上海
2  王五    male  2003   广州

2. Pandas从外部读取数据

2.1 文本文件的读取

Python读取txt或csv格式中的数据,可以使用Pandas模块中的read_table函数或read_csv函数。这里的“或”并不是指每个函数只能读取一种格式的数据,而是这两种函数均可以读取文本文件的数据。

  • filepath_or_buffer:指定txt文件或csv文件所在的具体路径。
  • sep:指定原数据集中各字段之间的分隔符,默认为Tab制表符。
  • header:是否需要将原数据集中的第一行作为表头,默认将第一行用作字段名称。
  • names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头。* * index_col:指定原数据集中的某些列作为数据框的行索引(标签)。
  • usecols:指定需要读取原数据集中的哪些变量名。
  • dtype:读取数据时,可以为原数据集的每个字段设置不同的数据类型。
  • converters:通过字典格式,为数据集中的某些字段设置转换函数。
  • skiprows:数据读取时,指定需要跳过原数据集开头的行数。
  • skipfooter:数据读取时,指定需要跳过原数据集末尾的行数。
  • nrows:指定读取数据的行数。
  • na_values:指定原数据集中哪些特征的值作为缺失值。
  • skip_blank_lines:读取数据时是否需要跳过原数据集中的空白行,默认为True。
  • parse_dates:如果参数值为True,则尝试解析数据框的行索引;如果参数为列表,则尝试解析对应的日期列;如果参数为嵌套列表,则将某些列合并为日期列;如果参数为字典,则解析对应的列(字典中的值),并生成新的字段名(字典中的键)。
  • thousands:指定原始数据集中的千分位符。
  • comment:指定注释符,在读取数据时,如果碰到行首指定的注释符,则跳过改行。
  • encoding:如果文件中含有中文,有时需要指定字符编码。
    python 数据分析--数据处理工具Pandas(1)
user_income = pd.read_table(r"E:/Data/3/data_test01.txt", sep=‘,‘,parse_dates={‘birthday‘:[0,1,2]},skiprows=2,skipfooter=3,comment=‘#‘,encoding=‘utf-8‘,thousands=‘&‘,engine=‘python‘)

user_income
排放量 频次 频率
0 国4 4296 0.386157
1 欧4 1876 0.168629
2 欧5 1132 0.101753
3 国4,国5 843 0.075775
4 国3 798 0.071730

今天的学习就先到这里了,Pandas确实不失为一款好的数据处理工具,不仅能够读写txt,csv, Excel,数据库,还提供了数据预处理,数据描述,数据清洗等功能,后续还需不上相关知识。
续见: python 数据分析--数据处理工具Pandas(2).

相关推荐