数据处理:
主要利用的库
import numpy as np
import pandas as pd
函数的使用:
1.读取:
path = "路径"
c = pd.read_csv(path,sep="")参数sep是数据的分割符号,如果不输入在读取csv文件中将默认为“,”
返回的内容是属于pandas库的特殊数据类型DataFrame。
在读取过程中,该函数会根据给出的数据自行判断数据类型,如果导入的数据类型并不是希望的数据类型,可以通过下面这个函数规定。如下,将column_name这一列的数据规定为int64型
df = pd.read_csv('example.csv', dtype={'column_name': 'int64'})
如果文件没有列名,我们也可以通过先构建一个
names列表储存列名利用read中的names参数来添加列名。
df.rename(columns={'A': 'X', 'B': 'Y'})
其中字典的key值为原列名,value为修改后的列名。
df = pd.read_csv('example.csv',names=names)# 前一个names是参数名,后一个是具体参数。
需要特别注意的是,如果数据本身有列名,本身的列名会被挤去第二行,另外。names中的列名,会与实际的列名右对齐,也就是说,如果数据的列数大于names中名字的个数,左侧的几列数据会出现没有添加列名的情况。
2.观察数据
df 为已经读取的数据
df.info() 查看的数据为其中每列的数据类型,以及数据中的非空缺的数值数目。
# 输出内容为数据的列名,每列数据的数量,数据类型# 不需要print也能够输出相应信息。
df.describe() # 输出的内容为每列的
count: 非NA/非空值的数量。
mean: 平均值(均值)。
std: 标准差(标准偏差)。
min: 最小值。
25%: 第一四分位数(Q1),即数据集中最小的25%的数据的最大值。
50%: 中位数(第二四分位数,Q2)。
75%: 第三四分位数(Q3),即数据集中最大的25%的数据的最小值。
max: 最大值。
# 如果要提取这些数字我们可以 a = df[列名].max()/mean()/std()
df.columns表示为df数据的列名 # 在处理数据时我们也可以通过
# df.columns = names # 来将列名替换成names中的数据,此时names中的列名量必须等于df中的列数。
指定观察用iloc或者loc:
# iloc
# 获取第一行的数据
row1 = df.iloc[0]
print(row1)
# 获取第二列的数据
col2 = df.iloc[:, 1]
print(col2)
# 获取第二行第二列的单个值
value = df.iloc[1, 1]
print(value)
# 获取多个行和多个列的数据
selected = df.iloc[[0, 2], [0, 2]]
print(selected)
# loc
row1 = df.loc['row1']
print(row1)
# 获取第二列的数据
col2 = df.loc[:, 'B']
print(col2)
# 获取第二行第二列的单个值
value = df.loc['row2', 'B']
print(value)
# 获取多个行和多个列的数据
selected = df.loc[['row1', 'row3'], ['A', 'C']]
print(selected)
3.数据清洗:
# 在观察数据之后,我们要清洗的内容包括缺失值,异常值。重复值
处理缺失值的方法:我们可以将缺失值设定为一个不在数据中存在存在的数值,比如0,-1,也可以设置成bool型的False。
对于异常值,我们可以根据常识挑选出这些异常值,比如说挑选挑选出网龄大于200岁的数据,或者年龄为负数的人。异常值的处理方式,如果即便删除异常值所在行对最后结果产生影响不大的情况下,我们可以删除异常值所在的一整行数据,比如你有几万个数据,其中的异常值只有一二十,那根据情况,我们可以选择直接删除这一行数据。-->这么做就是直接抹去存在异常值的数据。在对最终结果影响不大的前提下,我们可以通过用正常值的平均值或者中位数来代替这个位置的数据 --> 如果这样处理的话,程序的分析内容将减小异常值的影响,从而在这一行分析除了异常意外列的数据对结果的影响。
处理重复值
df.drop.duplicates("列名",keep="first")# 保留重复的第一个
a = df[df[列名] > 100]
此时a即为在df某一列中满足该列数字大于100的所有的行,前提:此处的数据类型应为确切的整形。
df[列名].isnull() 将返回该列名下数据为0的那一整行
利用isnull可以区分出缺失值
4.数据处理
df = df.frop_duplicates(["x",'y'])# 找出xy两列的组合方式
df.groupby(['x','y'])
df['体力'] = df['体力'].apply(lambda x:"high" if int(x) > 100 else 'low' if int(x) < 50 else 'mid')集体调整数字
5数据整理:
df = df.sort_values(by='列名',ascending=False).reset_index(drop=True) # ascending=False: 表示降序排序。如果设置为True,则表示升序排序。
# reset_index(): 会重置数据框的索引。默认情况下,重置索引会将旧索引添加为数据框的一个列。
# drop=True: 表示在重置索引时,不将旧索引添加为数据框的一个列。这样可以避免数据框中出现重复的索引列。
未完待续!
标签:df,列名,数据类型,print,names,数据处理,数据 From: https://www.cnblogs.com/zonghongqi/p/18310550