python的pandas清除负数数据-Pandas 数据处理,数据清洗详解

# -*-coding:utf-8-*-

from pandas import DataFrame

import pandas as pd

import numpy as np

"""

获取行列数据

"""

df = DataFrame(np.random.rand(4, 5), columns=["A", "B", "C", "D", "E"])

print df

print

df["col_sum"] = df.apply(lambda x: x.sum(), axis=1) # 横向求和,axis=1表示横向

df.loc["row_sum"] = df.apply(lambda x: x.sum()) # loc获取一整列的数据,对一列数据进行求和

print df

print

dd = pd.DataFrame(np.arange(0, 60, 2).reshape(10, 3), columns=list("abc"))

# loc获取一整列的数据

print dd

print

print dd.loc[0:len(dd), "a"]

print

print dd.loc[0:3, ["a", "b"]]

print

print dd.loc[[1, 5], ["b", "c"]]

print "--------------------------------------"

# iloc获取某个位置的元素,或者某个区域的元素

print dd.iloc[1, 1]

print dd.iloc[0:3, [0, 1]]

print dd.iloc[[0, 3, 5], 0:2]

print "--------------------------------------"

"""

去重函数 drop_duplicates()

"""

from pandas import Series, DataFrame

data = DataFrame({"k": [1, 1, 2, 2]})

print data

print type(data) #

print

isduplicates = data.duplicated() # duplicated()判断是否是重复的项

print isduplicates

print type(isduplicates) #

print

data = data.drop_duplicates() # drop_duplicates()移除重复的项

print data

print type(data) #

print "-------------------------------------------------"

"""

Pandas.DataFrame 读取、合并、修改列数据、新增列、分组、分组数据计算

"""

import numpy as np

import pandas as pd

from pandas import Series, DataFrame

from datetime import timedelta, datetime

from dateutil.parser import parse

"""

读写csv文件

"""

# 读取csv文件

df = pd.read_csv("data_english.csv", encoding="gbk")

# print df

print type(df) #

print df.columns # 所有列的标签

print df.index # 所有行的标签

print df.book_id # 选择某一列,可以使用df.book_id ,也可以使用df["book_id"]

print type(df.book_id) #

print np.array(df.book_id) # 将Series转换为numpy的darray格式

print "---------------------------------------------------------"

# 写入csv文件

# df.to_csv("dat.csv", index=False, encoding="gbk") # index=False表示不把index写入文件

"""

行列的选取

"""

print df.read_name # 选择一列

print df[:3] # 选择前3行

print df.loc[:, ("read_num", "read_name")] # df.loc[行标签,列标签]

print df.iloc[2, 4] # df.iloc[行位置,列位置]

print df.ix[2, 4] # df.ix[行位置或行标签,列位置或列标签]

# bool判断

print df[df.read_name == u"山问萍"].head() # 获取符合条件的行列

print df[(df.read_name == u"山问萍") & (df.book == u"植物生理学实验教程")] # 多个条件

print "----------------------------------------------"

"""

两个df相merge

"""

# pd.concat([df1, df2]) # 两个df的column都一样,index不重复(增加列)

# pd.concat([df1, df2], axis=1) # 两个df的index都一样,column不重复(增加行)

"""

增加列,删除列,重命名某一列

"""

# df["new_col"] = xxx # 直接增加一列,加到最后一列

# df.insert[1, "new_col"] # 使用df.insert 插入一列,可以设置这一列的位置

# del df["one_col"] # 直接使用del进行删除,删除某一列

# df = df.rename(columns={"old_name": "new_name"}) # 重命名某一列

# df = df.rename(columns={"old_name": "new_name"}, inplace=True)

# print "--------------------------------------------------------"

"""

apply(): 对dataframe的内容进行批量处理,比循环更快

map(),

agg():对分组的结果再分别进行不同的操作

"""

"""

数据合并

"""

import numpy as np

import pandas as pd

data1 = pd.DataFrame({"level": ["a", "b", "c", "d"], "number": [1, 3, 5, 7]})

data2 = pd.DataFrame({"level": ["a", "b", "c", "e"], "number": [2, 3, 4, 5]})

print data1

print data2

print pd.merge(data1, data2, on="level") # 合并,内连接

data3 = pd.DataFrame({"level1": ["a", "b", "c", "d"], "number": [1, 3, 5, 7]})

data4 = pd.DataFrame({"level2": ["a", "b", "c", "e"], "number": [2, 3, 4, 5]})

print pd.merge(data3, data4, left_on="level1", right_on="level2")

print pd.merge(data3, data4, left_on="level1", right_on="level2", how="left")

print "----------------------------------------"

"""

merge参数说明:

left和right:两个不同的DataFrame

how:合并的方式-->inner内连接,right右连接,left左连接,outer外连接,默认为inner

on:用于连接的列索引名称,必须存在于两个DataFrame对象中

left_on:

right_on:

left_index:

right_index:

sort:默认为True,将合并的数据进行排序

suffixes:当列名相同时,合并后,自动添加后缀名称,默认为(_x, _y)

copy:默认为True,复制数据结构

indicator:

"""

"""

重叠数据合并

"""

data3 = pd.DataFrame({"level": ["a", "b", "c", "d"], "number1": [1, 3, 5, np.nan]})

data4 = pd.DataFrame({"level": ["a", "b", "c", "e"], "number2": [2, np.nan, 4, 5]})

print data3.combine_first(data4) # 相同标签下的内容优先显示data3的内容,如果某个数据缺失,就用另外一个数据补上

"""

数据重塑和轴向旋转

数据重塑:reshape()

轴向旋转:unstack(),stack()

"""

data = pd.DataFrame(np.arange(12).reshape(3, 4), columns=["a", "b", "c", "d"], index=["wang", "li", "zhang"])

print data

print data.unstack() # 轴向旋转

print "---------------------------------"

"""

数据转换

"""

data = pd.DataFrame({"a": [1, 3, 3, 4], "b": [1, 3, 3, 5]})

print data

print data.duplicated() # 判断是否重复行

print data.drop_duplicates() # 去除重复行

"""

替换值

"""

data = pd.DataFrame({"a": [1, 3, 3, 4], "b": [1, 3, 3, 5]})

print data.replace(1, 2) # 凡是数据1,全部替换成数据2

print data.replace([1, 4], np.nan) # 凡是数据1,4,全部替换成np.nan

"""

数据分段

"""

data = [11, 15, 18, 20, 25, 26, 27, 24]

bins = [15, 20, 25]

print data

print pd.cut(data, bins)

你可能感兴趣的:(python的pandas清除负数数据-Pandas 数据处理,数据清洗详解)