panda数据清洗
1.常规语法
(1)判断缺失值 data.isnull().any()
(2)缺失值填充:df.fillna(50)
表示在缺失值的地方填充值为50
(3)将清洗后的数据进行以csv格式导出:data.to_csv(‘cleanfile.csv’ encoding=’utf-8’)
(4)修改列名:data = data.rename(columns = {'春花': '秋月' })
该处表示将春花改为秋月
(5)查看数据集的信息:data.info()
如列名是否存在空值,字段类型,以及文档的大小等
(6)重置索引:df.reset_index(drop=True)
如删除了几行数据,索引就会改变,改代码就可以实现索引重置,重新生成索引
(7)将对应列中的元素进行替换:
df["往事"] = df["往事"].str.replace("1", "2").astype('int64')
表示将往事这一列中所有的元素中的1替换成2
(8)添加新的列:df.assign(小楼 = lambda x : x["春花"] * 9 / 5 + 32)
表示生成小楼这一列,这一列里面的值等于春花这一列进行运算得到的。
(9)对选定的列进行统一计算:[df["故国"].apply(lambda x: x+1)]
该代码表示对故国这一列的每行数据进行加一操作
(10)删除列:data1.pop('时间')
表示删除时间这一列
2.数据集拼接:
(1)join方法
横向拼接-指的是拼接的方向向横向延申
a.join(b)
:
表示将数据集a,b进行横向拼接,即添加列。默认按照a的索引进行拼接。
a.join(b, how = "right")
: 表示按照b的索引进行拼接,默认时left,也就是按照左边的列进行拼接。
a.join(b, how = "inner")
:
表示按照共同索引进行拼接
a.join(b,how='outer')
:
a,b中所有的数据都进行拼接
(2)merge方法
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True)
参数名称 | 说明 |
---|---|
left/right | 两个不同的 DataFrame 对象。 |
on | 指定用于连接的键(即列标签的名字),该键必须同时存在于左右两个 DataFrame 中,如果没有指定,并且其他参数也未指定, 那么将会以两个 DataFrame 的列名交集做为连接键。 |
left_on | 指定左侧 DataFrame 中作连接键的列名。该参数在左、右列标签名不相同,但表达的含义相同时非常有用。 |
right_on | 指定左侧 DataFrame 中作连接键的列名。 |
left_index | 布尔参数,默认为 False。如果为 True 则使用左侧 DataFrame 的行索引作为连接键,若 DataFrame 具有多层索引(MultiIndex),则层的数量必须与连接键的数量相等。 |
right_index | 布尔参数,默认为 False。如果为 True 则使用左侧 DataFrame 的行索引作为连接键。 |
how | 要执行的合并类型,从 {‘left’, ‘right’, ‘outer’, ‘inner’} 中取值,默认为“inner”内连接。 |
sort | 布尔值参数,默认为True,它会将合并后的数据进行排序;若设置为 False,则按照 how 给定的参数值进行排序。 |
suffixes | 字符串组成的元组。当左右 DataFrame 存在相同列名时,通过该参数可以在相同的列名后附加后缀名,默认为(‘_x’,‘_y’)。 |
copy | 默认为 True,表示对数据进行复制 |
pd.merge(a, b)
:
常规拼接,横向拼接。拼接a,b这两列。默认按照inner方式拼接,只拼接索引值相同的数据。
3.时间格式的转化
该参数指定了要转换为datetime的对象。如果提供Dataframe,则该类型至少需要以下列:“年”、“月”、“日”,才能转化为datetime。
data1['时间'] = pd.to_datetime(data1[{"year", "month", "day", "hour"}])
表示将data1中的四列时间数据转化为datetime格式。
处理后产生新的列: