pandas 学习小计

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 学习小计)