Pandas(三)

11
0
0
2023-12-22

Pandas(三)

1.获取股票数据

使用数据API获取数据,参考:BigQuant数据API详解

import dai  # 确保导入了dai模块

# 选取股票列表中前20只股票
stock_query = """
    SELECT instrument 
    FROM cn_stock_bar1d 
    LIMIT 20
"""

# Execute the query to get the list of instruments
stocks = dai.query(stock_query, filters={'date': ['2019-07-28', '2019-08-03']}).df()
instruments = "','".join(stocks['instrument'].tolist())

# 获取相关股票数据,使用JOIN条件
data_query = f"""
    SELECT b.date, b.instrument, i.full_name, i.industry, b.volume, 
        p.profit_of_parent_to_total_revenue_ttm, v.pb 
    FROM cn_stock_bar1d b
    JOIN cn_stock_valuation v ON b.instrument = v.instrument AND b.date = v.date
    JOIN cn_stock_financial_profitability p ON b.instrument = p.instrument AND b.date = p.date
    JOIN cn_stock_basic_info i ON b.instrument = i.instrument
    WHERE b.instrument IN ('{instruments}') AND b.date BETWEEN '2019-07-28' AND '2019-08-03'
"""

# 获取相关股票数据
df = dai.query(data_query).df()

# 只查看前5行
print(df.head())

日志 13 条▼

  • date instrument full_name industry volume \

  • 0 2019-08-02 000010.SZ 深圳美丽生态股份有限公司 建筑业-土木工程建筑业 1561352

  • 1 2019-08-02 000010.SZ 深圳美丽生态股份有限公司 建筑业-土木工程建筑业 1561352

  • 2 2019-08-02 000010.SZ 深圳美丽生态股份有限公司 建筑业-土木工程建筑业 1561352

  • 3 2019-08-02 000010.SZ 深圳美丽生态股份有限公司 建筑业-土木工程建筑业 1561352

  • 4 2019-08-02 000010.SZ 深圳美丽生态股份有限公司 建筑业-土木工程建筑业 1561352

  • profit_of_parent_to_total_revenue_ttm pb

  • 0 -0.895270 3.468334

  • 1 -1.469783 3.468334

  • 2 -2.117772 3.468334

  • 3 -4.147823 3.468334

  • 4 -1.859484 3.468334

2.数据初探

df.head(3) # 取前3行数据查看

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

df.tail(3) # 取最后3行数据查看

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

55

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.0

3.468334

56

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.0

3.468334

57

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.0

3.468334

df.sample(5) # 随机抽取5条数据查看

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

55

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.000000

3.468334

47

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.156996

3.468334

35

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.007056

3.468334

34

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.006868

3.468334

14

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.034932

3.468334

df.shape #查看数据行列大小

复制代码

(58, 7)

df.columns #查看数据的列名

复制代码

Index(['date', 'instrument', 'full_name', 'industry', 'volume',

'profit_of_parent_to_total_revenue_ttm', 'pb'],

dtype='object')

df.describe() #查看数据的统计值

复制代码

volume

profit_of_parent_to_total_revenue_ttm

pb

count

58.0

58.000000

5.800000e+01

mean

1561352.0

-0.308779

3.468334e+00

std

0.0

0.813004

3.583742e-15

min

1561352.0

-4.147823

3.468334e+00

25%

1561352.0

-0.168988

3.468334e+00

50%

1561352.0

0.000000

3.468334e+00

75%

1561352.0

0.039167

3.468334e+00

max

1561352.0

0.166223

3.468334e+00

df.info() #查看导入数据类型

复制代码

日志 14 条▼

  • <class 'pandas.core.frame.DataFrame'>

  • RangeIndex: 58 entries, 0 to 57

  • Data columns (total 7 columns):

  • # Column Non-Null Count Dtype

  • --- ------ -------------- -----

  • 0 date 58 non-null datetime64[ns]

  • 1 instrument 58 non-null object

  • 2 full_name 58 non-null object

  • 3 industry 58 non-null object

  • 4 volume 58 non-null int64

  • 5 profit_of_parent_to_total_revenue_ttm 58 non-null float64

  • 6 pb 58 non-null float64

  • dtypes: datetime64[ns](1), float64(2), int64(1), object(3)

  • memory usage: 3.3+ KB

3.行/列选取

df.iloc[22] #利用iloc命令做行选取

复制代码

date 2019-08-02 00:00:00

instrument 000010.SZ

full_name 深圳美丽生态股份有限公司

industry 建筑业-土木工程建筑业

volume 1561352

profit_of_parent_to_total_revenue_ttm 0.008665

pb 3.468334

Name: 22, dtype: object

df.loc[22:25] #利用loc命令做行选取

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

22

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.008665

3.468334

23

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.093808

3.468334

24

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.093631

3.468334

25

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.091320

3.468334

df.loc[[22,33,44]] #利用loc命令做指定行选取

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

22

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.008665

3.468334

33

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.018263

3.468334

44

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.183423

3.468334

df['full_name'] #查看'company_name'列数据

复制代码

0 深圳美丽生态股份有限公司

1 深圳美丽生态股份有限公司

2 深圳美丽生态股份有限公司

3 深圳美丽生态股份有限公司

4 深圳美丽生态股份有限公司

5 深圳美丽生态股份有限公司

6 深圳美丽生态股份有限公司

7 深圳美丽生态股份有限公司

8 深圳美丽生态股份有限公司

9 深圳美丽生态股份有限公司

10 深圳美丽生态股份有限公司

11 深圳美丽生态股份有限公司

12 深圳美丽生态股份有限公司

13 深圳美丽生态股份有限公司

14 深圳美丽生态股份有限公司

15 深圳美丽生态股份有限公司

16 深圳美丽生态股份有限公司

17 深圳美丽生态股份有限公司

18 深圳美丽生态股份有限公司

19 深圳美丽生态股份有限公司

20 深圳美丽生态股份有限公司

21 深圳美丽生态股份有限公司

22 深圳美丽生态股份有限公司

23 深圳美丽生态股份有限公司

24 深圳美丽生态股份有限公司

25 深圳美丽生态股份有限公司

26 深圳美丽生态股份有限公司

27 深圳美丽生态股份有限公司

28 深圳美丽生态股份有限公司

29 深圳美丽生态股份有限公司

30 深圳美丽生态股份有限公司

31 深圳美丽生态股份有限公司

32 深圳美丽生态股份有限公司

33 深圳美丽生态股份有限公司

34 深圳美丽生态股份有限公司

35 深圳美丽生态股份有限公司

36 深圳美丽生态股份有限公司

37 深圳美丽生态股份有限公司

38 深圳美丽生态股份有限公司

39 深圳美丽生态股份有限公司

40 深圳美丽生态股份有限公司

41 深圳美丽生态股份有限公司

42 深圳美丽生态股份有限公司

43 深圳美丽生态股份有限公司

44 深圳美丽生态股份有限公司

45 深圳美丽生态股份有限公司

46 深圳美丽生态股份有限公司

47 深圳美丽生态股份有限公司

48 深圳美丽生态股份有限公司

49 深圳美丽生态股份有限公司

50 深圳美丽生态股份有限公司

51 深圳美丽生态股份有限公司

52 深圳美丽生态股份有限公司

53 深圳美丽生态股份有限公司

54 深圳美丽生态股份有限公司

55 深圳美丽生态股份有限公司

56 深圳美丽生态股份有限公司

57 深圳美丽生态股份有限公司

Name: full_name, dtype: object

df[['instrument', 'full_name', 'pb']] #获取多列数据

复制代码

instrument

full_name

pb

0

000010.SZ

深圳美丽生态股份有限公司

3.468334

1

000010.SZ

深圳美丽生态股份有限公司

3.468334

2

000010.SZ

深圳美丽生态股份有限公司

3.468334

3

000010.SZ

深圳美丽生态股份有限公司

3.468334

4

000010.SZ

深圳美丽生态股份有限公司

3.468334

5

000010.SZ

深圳美丽生态股份有限公司

3.468334

6

000010.SZ

深圳美丽生态股份有限公司

3.468334

7

000010.SZ

深圳美丽生态股份有限公司

3.468334

8

000010.SZ

深圳美丽生态股份有限公司

3.468334

9

000010.SZ

深圳美丽生态股份有限公司

3.468334

10

000010.SZ

深圳美丽生态股份有限公司

3.468334

11

000010.SZ

深圳美丽生态股份有限公司

3.468334

12

000010.SZ

深圳美丽生态股份有限公司

3.468334

13

000010.SZ

深圳美丽生态股份有限公司

3.468334

14

000010.SZ

深圳美丽生态股份有限公司

3.468334

15

000010.SZ

深圳美丽生态股份有限公司

3.468334

16

000010.SZ

深圳美丽生态股份有限公司

3.468334

17

000010.SZ

深圳美丽生态股份有限公司

3.468334

18

000010.SZ

深圳美丽生态股份有限公司

3.468334

19

000010.SZ

深圳美丽生态股份有限公司

3.468334

20

000010.SZ

深圳美丽生态股份有限公司

3.468334

21

000010.SZ

深圳美丽生态股份有限公司

3.468334

22

000010.SZ

深圳美丽生态股份有限公司

3.468334

23

000010.SZ

深圳美丽生态股份有限公司

3.468334

24

000010.SZ

深圳美丽生态股份有限公司

3.468334

25

000010.SZ

深圳美丽生态股份有限公司

3.468334

26

000010.SZ

深圳美丽生态股份有限公司

3.468334

27

000010.SZ

深圳美丽生态股份有限公司

3.468334

28

000010.SZ

深圳美丽生态股份有限公司

3.468334

29

000010.SZ

深圳美丽生态股份有限公司

3.468334

30

000010.SZ

深圳美丽生态股份有限公司

3.468334

31

000010.SZ

深圳美丽生态股份有限公司

3.468334

32

000010.SZ

深圳美丽生态股份有限公司

3.468334

33

000010.SZ

深圳美丽生态股份有限公司

3.468334

34

000010.SZ

深圳美丽生态股份有限公司

3.468334

35

000010.SZ

深圳美丽生态股份有限公司

3.468334

36

000010.SZ

深圳美丽生态股份有限公司

3.468334

37

000010.SZ

深圳美丽生态股份有限公司

3.468334

38

000010.SZ

深圳美丽生态股份有限公司

3.468334

39

000010.SZ

深圳美丽生态股份有限公司

3.468334

40

000010.SZ

深圳美丽生态股份有限公司

3.468334

41

000010.SZ

深圳美丽生态股份有限公司

3.468334

42

000010.SZ

深圳美丽生态股份有限公司

3.468334

43

000010.SZ

深圳美丽生态股份有限公司

3.468334

44

000010.SZ

深圳美丽生态股份有限公司

3.468334

45

000010.SZ

深圳美丽生态股份有限公司

3.468334

46

000010.SZ

深圳美丽生态股份有限公司

3.468334

47

000010.SZ

深圳美丽生态股份有限公司

3.468334

48

000010.SZ

深圳美丽生态股份有限公司

3.468334

49

000010.SZ

深圳美丽生态股份有限公司

3.468334

50

000010.SZ

深圳美丽生态股份有限公司

3.468334

51

000010.SZ

深圳美丽生态股份有限公司

3.468334

52

000010.SZ

深圳美丽生态股份有限公司

3.468334

53

000010.SZ

深圳美丽生态股份有限公司

3.468334

54

000010.SZ

深圳美丽生态股份有限公司

3.468334

55

000010.SZ

深圳美丽生态股份有限公司

3.468334

56

000010.SZ

深圳美丽生态股份有限公司

3.468334

57

000010.SZ

深圳美丽生态股份有限公司

3.468334

df.loc[:10, ['full_name', 'pb']] #获取指定行列数据

复制代码

full_name

pb

0

深圳美丽生态股份有限公司

3.468334

1

深圳美丽生态股份有限公司

3.468334

2

深圳美丽生态股份有限公司

3.468334

3

深圳美丽生态股份有限公司

3.468334

4

深圳美丽生态股份有限公司

3.468334

5

深圳美丽生态股份有限公司

3.468334

6

深圳美丽生态股份有限公司

3.468334

7

深圳美丽生态股份有限公司

3.468334

8

深圳美丽生态股份有限公司

3.468334

9

深圳美丽生态股份有限公司

3.468334

10

深圳美丽生态股份有限公司

3.468334

df.iloc[:5,3:] #获取指定行列数据

复制代码

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

0

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

1

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

2

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

3

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

4

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

4.更多行列操作

接下来采用以上所学,我们进行练习:

import numpy as np

df['open_int'] = np.nan #在数据表中新增一列"open_int",赋值为NaN(缺失值)
df.head() #查看数据集

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

NaN

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

NaN

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

NaN

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

NaN

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

NaN

df['open_int'] = 999 #赋值999
df.head()

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

df['test'] = df.industry == '民营企业' #判断
df.head(5)

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

test

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

False

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

False

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

False

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

False

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

False

df.loc[df.industry == '民营企业', 'test'] = '他是民营企业,税负真的不轻' #判断并赋值
df.loc[df.industry != '民营企业', 'test'] = '不是民营企业,具体是啥还不知道' #判断并赋值
df.head()

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

test

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

不是民营企业,具体是啥还不知道

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

不是民营企业,具体是啥还不知道

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

不是民营企业,具体是啥还不知道

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

不是民营企业,具体是啥还不知道

df.loc[2:4, 'test'] = '我不听我不听' #选取特定行列,并赋值
df.head()

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

test

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

不是民营企业,具体是啥还不知道

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

我不听我不听

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

我不听我不听

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

我不听我不听

df.rename(columns={'test':'乱加的一列'}, inplace=True) #更改列名,并固化该操作
df.head()

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

不是民营企业,具体是啥还不知道

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

我不听我不听

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

我不听我不听

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

我不听我不听

df_test = df[:6] #取局部数据作练习
df_test.columns = ['列%s' % str(i) for i in range(1,len(df_test.columns)+1)] #更改所有的列名
df_test

复制代码

列1

列2

列3

列4

列5

列6

列7

列8

列9

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

不是民营企业,具体是啥还不知道

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

我不听我不听

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

我不听我不听

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

我不听我不听

5

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.475029

3.468334

999

不是民营企业,具体是啥还不知道

df_test.reindex(columns= ['列1','列2','列4','列12','列3','列5','列6','列8','列7','列9']) #重排列名
df_test

复制代码

列1

列2

列3

列4

列5

列6

列7

列8

列9

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

不是民营企业,具体是啥还不知道

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

我不听我不听

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

我不听我不听

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

我不听我不听

5

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.475029

3.468334

999

不是民营企业,具体是啥还不知道

df_test.reindex(index= [3,4,5,0,1,2]) #重排index

复制代码

列1

列2

列3

列4

列5

列6

列7

列8

列9

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

我不听我不听

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

我不听我不听

5

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.475029

3.468334

999

不是民营企业,具体是啥还不知道

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

不是民营企业,具体是啥还不知道

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

我不听我不听

5.行列删除

df_test.drop([2,5],axis=0) #删除行

复制代码

列1

列2

列3

列4

列5

列6

列7

列8

列9

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

不是民营企业,具体是啥还不知道

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

我不听我不听

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

我不听我不听

df_test.drop(['列1','列2'], axis=1) #删除列

复制代码

列3

列4

列5

列6

列7

列8

列9

0

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

1

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

不是民营企业,具体是啥还不知道

2

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

我不听我不听

3

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

我不听我不听

4

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

我不听我不听

5

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.475029

3.468334

999

不是民营企业,具体是啥还不知道

6.数据类型的转化

df['date'].sample(5) #查看数据

复制代码

23 2019-08-02

37 2019-08-02

46 2019-08-02

32 2019-08-02

54 2019-08-02

Name: date, dtype: datetime64[ns]

print(type(df.date[0]))
df.date = df.date.map(lambda x: x.strftime('%Y-%m-%d')) #将时间数据转换为字符串。
print(type(df.date[0]))

复制代码

日志 2 条▼

  • <class 'pandas._libs.tslibs.timestamps.Timestamp'>

  • <class 'str'>

7.数据过滤

df[df['pb']>1].head() #选择fs_roe>10的数据,囿于篇幅,展示前几行

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

不是民营企业,具体是啥还不知道

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

我不听我不听

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

我不听我不听

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

我不听我不听

df[(df['pb']>1) & (df['pb']<4)].head() #选择fs_roe在某区间的数据

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

不是民营企业,具体是啥还不知道

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

我不听我不听

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

我不听我不听

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

我不听我不听

df[(df['pb']>1) & (df['industry'] != '地方国有企业')].head() #选择满足多种条件的信息

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.469783

3.468334

999

不是民营企业,具体是啥还不知道

2

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-2.117772

3.468334

999

我不听我不听

3

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-4.147823

3.468334

999

我不听我不听

4

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-1.859484

3.468334

999

我不听我不听

8.数据排序

df.sort_values(by='pb').head() #按某条件排序,默认升序排列

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

31

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.002605

3.468334

999

不是民营企业,具体是啥还不知道

32

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.012599

3.468334

999

不是民营企业,具体是啥还不知道

33

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.018263

3.468334

999

不是民营企业,具体是啥还不知道

34

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.006868

3.468334

999

不是民营企业,具体是啥还不知道

df.sort_values(by='pb',ascending= False).head() #ascendig= False,按降序排列

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

0

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.895270

3.468334

999

不是民营企业,具体是啥还不知道

43

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.047334

3.468334

999

不是民营企业,具体是啥还不知道

31

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.002605

3.468334

999

不是民营企业,具体是啥还不知道

32

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.012599

3.468334

999

不是民营企业,具体是啥还不知道

33

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

-0.018263

3.468334

999

不是民营企业,具体是啥还不知道

df.sort_values(by= ['pb','profit_of_parent_to_total_revenue_ttm'],ascending= False).head() #多重指标排序

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

48

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.166223

3.468334

999

不是民营企业,具体是啥还不知道

40

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.161266

3.468334

999

不是民营企业,具体是啥还不知道

47

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.156996

3.468334

999

不是民营企业,具体是啥还不知道

41

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.148326

3.468334

999

不是民营企业,具体是啥还不知道

42

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352

0.131558

3.468334

999

不是民营企业,具体是啥还不知道

9.数据的描述统计

以数据的'fs_roe'列为例,进行数据描述和统计

df['pb'].mean() #计算平均数

复制代码

3.4683336824987894

df['pb'].idxmax() #返回最大值index

复制代码

0

df.loc[df['pb'].idxmin()] #定位到fs_roe最小的一列

复制代码

date 2019-08-02

instrument 000010.SZ

full_name 深圳美丽生态股份有限公司

industry 建筑业-土木工程建筑业

volume 1561352

profit_of_parent_to_total_revenue_ttm -0.89527

pb 3.468334

open_int 999

乱加的一列 不是民营企业,具体是啥还不知道

Name: 0, dtype: object

df.profit_of_parent_to_total_revenue_ttm.corr(df.volume) #求解相关系数

复制代码

nan

df.industry.unique() #查看不重复的数据

复制代码

array(['建筑业-土木工程建筑业'], dtype=object)

df.industry.value_counts() #查看数据出现次数

复制代码

建筑业-土木工程建筑业 58

Name: industry, dtype: int64

10.处理缺失的数据

df_test = df.sample(5)
df_test.loc[df_test['pb']<=1,'pb'] = np.nan #条件赋值NaN
df_test.loc[66] = np.nan #行赋值NaN
df_test #练习数据集构造完成

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

38

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.050335

3.468334

999.0

不是民营企业,具体是啥还不知道

51

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-3.006365

3.468334

999.0

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-1.469783

3.468334

999.0

不是民营企业,具体是啥还不知道

42

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.131558

3.468334

999.0

不是民营企业,具体是啥还不知道

22

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.008665

3.468334

999.0

不是民营企业,具体是啥还不知道

66

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

df_test.dropna() #删去包含NaN值的行

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

38

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.050335

3.468334

999.0

不是民营企业,具体是啥还不知道

51

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-3.006365

3.468334

999.0

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-1.469783

3.468334

999.0

不是民营企业,具体是啥还不知道

42

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.131558

3.468334

999.0

不是民营企业,具体是啥还不知道

22

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.008665

3.468334

999.0

不是民营企业,具体是啥还不知道

df_test.dropna(how= 'all',inplace= True) #删除全部为NaN的行,并使用'inplace=True'命令固化该删除操作。
df_test

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

38

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.050335

3.468334

999.0

不是民营企业,具体是啥还不知道

51

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-3.006365

3.468334

999.0

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-1.469783

3.468334

999.0

不是民营企业,具体是啥还不知道

42

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.131558

3.468334

999.0

不是民营企业,具体是啥还不知道

22

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.008665

3.468334

999.0

不是民营企业,具体是啥还不知道

df_test.dropna(axis= 1) #删除含有NaN值的列

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

38

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.050335

3.468334

999.0

不是民营企业,具体是啥还不知道

51

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-3.006365

3.468334

999.0

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-1.469783

3.468334

999.0

不是民营企业,具体是啥还不知道

42

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.131558

3.468334

999.0

不是民营企业,具体是啥还不知道

22

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.008665

3.468334

999.0

不是民营企业,具体是啥还不知道

在处理数据时,最好的方式不是删除数据,而是恰当地填充数据。 下面构造新的数据集,做示例操作。

df_test.loc[23] = np.nan
df_test

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

38

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.050335

3.468334

999.0

不是民营企业,具体是啥还不知道

51

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-3.006365

3.468334

999.0

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-1.469783

3.468334

999.0

不是民营企业,具体是啥还不知道

42

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.131558

3.468334

999.0

不是民营企业,具体是啥还不知道

22

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.008665

3.468334

999.0

不是民营企业,具体是啥还不知道

23

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

df_test.fillna(0) #填充所有缺失数据为0

复制代码

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

38

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.050335

3.468334

999.0

不是民营企业,具体是啥还不知道

51

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-3.006365

3.468334

999.0

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-1.469783

3.468334

999.0

不是民营企业,具体是啥还不知道

42

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.131558

3.468334

999.0

不是民营企业,具体是啥还不知道

22

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.008665

3.468334

999.0

不是民营企业,具体是啥还不知道

23

0

0

0

0

0.0

0.000000

0.000000

0.0

0

df_test.fillna({'date':'1988-09-01','volume':'20000000'}) # 对不同列的缺失数据填充不同的值

date

instrument

full_name

industry

volume

profit_of_parent_to_total_revenue_ttm

pb

open_int

乱加的一列

38

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.050335

3.468334

999.0

不是民营企业,具体是啥还不知道

51

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-3.006365

3.468334

999.0

不是民营企业,具体是啥还不知道

1

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

-1.469783

3.468334

999.0

不是民营企业,具体是啥还不知道

42

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.131558

3.468334

999.0

不是民营企业,具体是啥还不知道

22

2019-08-02

000010.SZ

深圳美丽生态股份有限公司

建筑业-土木工程建筑业

1561352.0

0.008665

3.468334

999.0

不是民营企业,具体是啥还不知道

23

1988-09-01

NaN

NaN

NaN

20000000

NaN

NaN

NaN

NaN

df_test.volume.fillna(df_test.volume.mean()) #采用平均值填充

38 1561352.0

51 1561352.0

1 1561352.0

42 1561352.0

22 1561352.0

23 1561352.0

Name: volume, dtype: float64

df_test.volume.fillna(method= 'ffill') #向前填充('ffill')或者向后填充('bfill')

38 1561352.0

51 1561352.0

1 1561352.0

42 1561352.0

22 1561352.0

23 1561352.0

Name: volume, dtype: float64

df_test.volume.fillna(method= 'ffill',limit= 1) #限制向前或者向后填充行数

38 1561352.0

51 1561352.0

1 1561352.0

42 1561352.0

22 1561352.0

23 1561352.0

Name: volume, dtype: float64

11.数据保存

将清理后的数据保存在平台上:

df.to_csv('df_Pandaslearning') #保存数据