Pandas 数据处理,数据清洗

来源:互联网 发布:游族网络最新消息 编辑:程序博客网 时间:2024/04/28 00:15
# -*-coding:utf-8-*-from pandas import DataFrameimport pandas as pdimport numpy as np"""    获取行列数据"""df = DataFrame(np.random.rand(4, 5), columns=['A', 'B', 'C', 'D', 'E'])print dfprintdf['col_sum'] = df.apply(lambda x: x.sum(), axis=1)  # 横向求和,axis=1表示横向df.loc['row_sum'] = df.apply(lambda x: x.sum())  # loc获取一整列的数据,对一列数据进行求和print dfprintdd = pd.DataFrame(np.arange(0, 60, 2).reshape(10, 3), columns=list('abc'))# loc获取一整列的数据print ddprintprint dd.loc[0:len(dd), 'a']printprint dd.loc[0:3, ['a', 'b']]printprint 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, DataFramedata = DataFrame({'k': [1, 1, 2, 2]})print dataprint type(data)  # <class 'pandas.core.frame.DataFrame'>printisduplicates = data.duplicated()  # duplicated()判断是否是重复的项print isduplicatesprint type(isduplicates)  # <class 'pandas.core.series.Series'>printdata = data.drop_duplicates()  # drop_duplicates()移除重复的项print dataprint type(data)  # <class 'pandas.core.frame.DataFrame'>print '-------------------------------------------------'"""    Pandas.DataFrame 读取、合并、修改列数据、新增列、分组、分组数据计算"""import numpy as npimport pandas as pdfrom pandas import Series, DataFramefrom datetime import timedelta, datetimefrom dateutil.parser import parse"""    读写csv文件"""# 读取csv文件df = pd.read_csv('data_english.csv', encoding='gbk')# print dfprint type(df)  # <class 'pandas.core.frame.DataFrame'>print df.columns  # 所有列的标签print df.index  # 所有行的标签print df.book_id  # 选择某一列,可以使用df.book_id ,也可以使用df['book_id']print type(df.book_id)  # <class 'pandas.core.series.Series'>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 npimport pandas as pddata1 = 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 data1print data2print 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 dataprint data.unstack()  # 轴向旋转print '---------------------------------'"""    数据转换"""data = pd.DataFrame({'a': [1, 3, 3, 4], 'b': [1, 3, 3, 5]})print dataprint 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,全部替换成数据2print data.replace([1, 4], np.nan)  # 凡是数据1,4,全部替换成np.nan"""    数据分段"""data = [11, 15, 18, 20, 25, 26, 27, 24]bins = [15, 20, 25]print dataprint pd.cut(data, bins)
0 0
原创粉丝点击