用python读取hdf5数据的某个维度,如何加快速度?

我有一个较大的DataFrame,请问,如何快速取date维度的唯一值?
我现在用的是如下的方法,先取出后去重,速度有点慢,耗时5s:

    df = store.df.date.drop_duplicates()

之前我把数据存储在mysql中,用sql取唯一的date值只需要80ms:

select distinct date from table 

请问,我该如何优化?
是不是我在保存的时候有问题?date维度应该只存11527个值?code维度应该只存5000个值?


import pandas as pd
import numpy as np
from itertools import product
from time import time


#生成数据
def generate_data():
    np.random.seed(202108)

    date = pd.date_range(start="19900101", end="20210723", freq="D")
    date = pd.DataFrame(date, columns=["date"])

    code = pd.DataFrame(range(5000), columns=["code"])

    # generate product of the two columns:
    df = pd.DataFrame(product(date["date"], code["code"]), columns=["date", "code"])
    df['data'] = np.random.random(len(df))
    return df

#保存数据
def save_data(filename, df):
    store = pd.HDFStore(filename)
    store['df'] = df
    store.close()
    return

#读数据
def read_unique_date(file_name):
    store = pd.HDFStore(file_name)
    start = time()
    df = store.df.date.drop_duplicates()
    store.close()
    stop = time()
    print(stop - start)
    return df


def main():
    path = 'd:\\'
    file = 'large data.h5'
    file_name = path + file
    df = generate_data()
    save_data(file_name, df)
    df1 = read_unique_date(file_name)
    return


if __name__ == '__main__':
    main()

建议是别用drop_duplicates。
因为你存的是data与code的笛卡尔积,即11527*5000条数据,5000万条左右。
存储的文件体积应该2.8G左右吧,并且没有索引
数据量还是不小的,mysql的去重是借助索引进行优化的,pandas的性能没那么高。
所以建议使用高性能的去重方法(比如bitmap之类的,或者借助redis自己写一个等等)