美文网首页
pandas 学习小计

pandas 学习小计

作者: 青铜搬砖工 | 来源:发表于2019-08-28 19:24 被阅读0次

    1.今天有一个需求,两个几百万的数据集进行比较去重。找出差集。数据集A,B 找出A-B

    pd.read_csv('data_test.csv', usecols=['docID'])可以指定读取csv文件中的哪一列
    pd还有read_sql(sql,conn)

    import pymysql
    conn = pymysql.connect(host='10.31.0.1', port=3306, db='test_db', user='test_user', passwd='test_password')
    sql = "select * from table_name"
    df = pd.read_sql(sql,conn)
    

    在读取数据库的过程中深刻领会了select * from table_name用*号的不方便,太慢了,读取的太慢了,改成列名速度搜搜的上来了。

    df_merger_database_input = df_database.append(df_input)DataFrame实例可以使用append方法合并,即使列名不一致也可以,用Nan来填补没有的数据。

    df_merger_database_input.drop_duplicates('colone_name',False,inplace=True)#删除数据库与input中都有的数据 drop_duplicates方法删除.colone_name列中重复的值,
    第二个参数有几个值:False表示只要是重复全删除,first表示保留重复值第一次出现的值,last保留重复值最后一次出现的值
    第三个参数:True 表示在原来的数据集上进行删除,False表示创建一个新的对象保存删除结果,原数据集不变。如果为False一定要赋值给一个新变量。

    df_merger_database_input.dropna(axis=0) dropna(axis=0)删除含有空的行 当axis=0的时候删除含有空的行,当axis=1的时候删除含有空的列

    df_temp = df_merger_database_input_not_NAN.groupby('年纪')['班级'].value_counts()
    groupby与sql语句的groupby一致,表示分组,我以年纪分组,然后计算每个班级的学生个数。
    value_counts函数计算指定列相同的个数。这个就是指定的班级列 相同班级的个数。
    先group_by在value_counts返回的series是个复合索引的index.没有找到好的方法转变为dataFrame
    就用了最笨的方法:

    temp_dict = {
            '年纪':[],
            '班级':[],
            '个数':[]
        }
        for index,value in df_temp.items():
            temp_dict['年纪'].append(index[0])
            temp_dict['班级'].append(index[1])
            temp_dict['个数'].append(value)
    new_df = pd.DataFrame(temp_dict)
    

    merge操作

    df5 = pd.merge(left_df,right_df,how='left',on=['列名1','列名2'])
      print(df5)
    

    merge 与sql中的join一致,left right等 on指定链接的列名 如果没有on 则会找到所有相同的列 进行merge

    相关文章

      网友评论

          本文标题:pandas 学习小计

          本文链接:https://www.haomeiwen.com/subject/winmectx.html