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 isduplicatespython怎么读取dat文件
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) #
lumns # 所有列的标签
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写⼊⽂件"""
⾏列的选取
"""
ad_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 ad_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
(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]})
(data3, data4, left_on="level1", right_on="level2")
(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 data3bine_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]})
place(1, 2) # 凡是数据1,全部替换成数据2
place([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)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论