1 获取数据源

1.1 导入外部数据:read_x方法

导入excel文件(.xlsx)

import pandas as pd
df = pd.read_excel(r"C:\Users\wangyifan0122\Desktop\t.xlsx", 
                   sheet_name="Sheet1", index_col=0, header=0)
print(df)

df2 = df = pd.read_excel(r"C:\Users\wangyifan0122\Desktop\t.xlsx", usecols=[1,3])
print(df2)

参数:

  • r(转义符):避免路径里面\被转义,或者可以使用/。df = pd.read_excel("C:/Users/wangyifan0122/Desktop/t.xlsx")
  • sheet_name参数:通过名字或者顺序指定要导入哪个Sheet的文件,默认第一个(0)。一个.xlsx文件可以包含多个Sheet。
  • index_col参数:设置行索引,默认0。
  • header参数:设置列索引,默认0。
  • usecols参数:指定要导入的列。可以是某个具体值(单个列),也可以是列表形式(某些列)。

导入.csv文件

df = pd.read_csv(r"C:\Users\wangyifan0122\Desktop\t.csv", 
                sep=',', nrows=2)
print(df)

df2 = pd.read_csv(r"C:\Users\wangyifan0122\Desktop\t2.csv",
                  encoding="gbk")
print(df2)

df3 = pd.read_csv(r"C:\Users\wangyifan0122\Desktop\新建文件夹\t.csv",
                  engine="python", encoding="utf-8-sig")
print(df3)

参数:

  • sep参数:指定分隔符号,默认逗号。有的csv文件不一定以逗号为分隔,常见的还有空格、制表符。
  • nrows参数:指定要读取的行数。
  • encoding参数:指定编码格式。文件格式为“CSV UTF-8(逗号分隔)(.csv)”时,默认encoding="utf-8";文件格式为“CSV(逗号分隔)(.csv)”时,需要设置encoding="gbk"
  • engine参数:当文件路径中包含中文时,需要用engine指定为Python语言,默认C。同时,文件格式为“CSV UTF-8(逗号分隔)(.csv)”时,设置encoding="utf-8-sig";文件格式为“CSV(逗号分隔)(.csv)”时,需要encoding="gbk"

导入.txt文件
read_table()方法是将利用分隔符分开的文件导入DataFrame的通用函数。不仅可以导入.txt文件,还可以导入.csv文件。

df = pd.read_table(r"C:\Users\wangyifan0122\Desktop\t.txt", sep=",")
print(df)

df2 = pd.read_table(r"C:\Users\wangyifan0122\Desktop\t.csv", sep=",")
print(df2)

参数:

  • sep参数:指定分隔符号。无默认值,必须指定。

1.2 创建数据

参照【Python数据分析】【Pandas】Series、DataFrame 新建DataFrame数据。

1.3 获取数据信息

import pandas as pd
df = pd.read_excel(r"C:\Users\wangyifan0122\Desktop\t.xlsx")
print(df)
print(df.head(2))
print(df.shape)
print(df.info())
print(df.describe())

方法:

  • head():指定参数控制显示前几行,默认5。
  • shape:以元组形式返回行数、列数。
  • info():查看数据表中的数据类型。
  • describe():获取所有数值类型字段的分布值。

2 数据预处理

2.1 缺失值处理

import pandas as pd
df = pd.read_excel(r"c:/Users/wangyifan0122/Desktop/t.xlsx")

print(df)

# 缺失值查看
print(df.info()) # 查看列表中的数据类型
print(df.isnull()) # 判断缺失值

# 缺失值删除
print(df.dropna()) # 删除含有缺失值的行
print(df.dropna(how="all")) # 删除整行缺失

# 缺失值填充
print(df.fillna(0)) # 填充所有的缺失值
print(df.fillna({"年龄":"24","性别":"男"})) # 指定列填充

方法:

  • info():查看数据表中的数据类型。缺失值一般用NaN表示。
  • isnull():缺失值返回True。
  • dropna():默认删除含有缺失值的行,返回删除后的数据,不改变原数据。指定参数how=all,只删除全为空值的行。
  • fillna():指定要填充的值,默认对数据表中所有的缺失值进行填充。可以指明列名,按不同列填充。

python如何获取函数的多个属性_Desktop

2.2 重复值处理

import pandas as pd
df = pd.read_excel(r"c:/Users/wangyifan0122/Desktop/t.xlsx")

print(df)

print(df.drop_duplicates())
print(df.drop_duplicates("年龄")) 
print(df.drop_duplicates(["年龄","编码"])) 
print(df.drop_duplicates(["年龄","编码"], keep="last"))

方法:

  • drop_duplicates():默认对所有值进行重复值判断,且默认保留第一个行值。把列名以列表的形式传递给参数subset,可以针对某一/某些列进行重复值删除判断。参数keep自定义删除重复项时要保留哪个,默认"first"保留第一个,"last"保留最后一个,False删除全部重复值。

python如何获取函数的多个属性_缺失值_02

2.3 异常值检测与处理

异常值检测:

  1. 根据业务经验划定不同指标,超过该范围的值算作异常值。
  2. 通过绘制箱型图,把大于箱型图上边缘或者小于箱型图下边缘的点称为异常值。
  3. 如果数据服从正态分布,偏差超过3倍标准差,就认为是异常值。

异常值处理:

  1. 删除。
  2. 把异常值当成缺失值填充。replace()方法。
  3. 把异常值当成特殊情况,研究异常值出现的原因。

2.4 数据类型转换

import pandas as pd
df = pd.read_excel(r"c:/Users/wangyifan0122/Desktop/t.xlsx")

print(df)

print(df["年龄"].dtype)
print(df["年龄"].astype("float64"))

方法:

  • dtype:获取某一列的数据类型。info()获取每一列的数据类型。
  • astype():对数据类型进行转换。

python如何获取函数的多个属性_python_03

2.5 索引设置

import pandas as pd
df = pd.read_excel(r"c:/Users/wangyifan0122/Desktop/t.xlsx")

print(df)

# 添加索引
df.columns = ["编号","年龄","性别"] # 列索引
df.index = [1, 2, 3, 4] # 行索引
print(df)

# 重新设置索引
print(df.set_index("编号")) # 重新设置索引列
print(df.set_index(["性别","编号"])) # 层次化索引

# 重命名索引
print(df.rename(index={1:"一",2:"二",3:"三",4:"四"}, 
               columns={"编号":"编码"}))

# 重置索引
df2 = pd.read_excel(r"c:/Users/wangyifan0122/Desktop/t2.xlsx")
df2.set_index(["z1","z2"],inplace=True)
print(df2)
df2.reset_index(level=0, inplace=True)
print(df2)

方法:

  • columns参数:传入列索引值。
  • index参数:传入行索引值。
  • set_index():重新设置索引列,指明要用作索引的列的名称。传入多个列名时,称为层次化索引
  • rename():修改行、列索引名。
  • reset_index():重置索引。把索引列当做一个columns进行返回。level参数指定将层次化索引的第几级别转化,默认全部索引None。drop参数指定是否将元索引删除,默认False。inplace参数指定是否修改原数据表,默认False。