pandas笔记集 (一)


** 版权所有 By Excel **

使用pandas库实现以下内容:

1) 读取文件“SH#600519.xlsx”中有关股票的数据。

2) 设计并实现一组命令行下的选择列表,用户通过此列表可以完成如下的功能:

  • i. 显示某个输入的日期的当日数据。(注:当日数据应包括日期、开盘、最高、最低、收盘、成交量、成交额)
  • ii. 显示收盘价高于某个输入的价格的所有日期。
  • iii. 显示股价波动高于某个输入的值的所有日期。(注:股价波动即为最高价减去最低价的值)
  • iv. 显示成交量高于某个输入的值的所有日期。
  • v. 显示成交额高于某个输入的值的所有日期。

  分析:

    难点:

   实验内容不难,难度在处理excel文件数据上,原excel表头:
    原excel表头

   在读取时,需要处理前2行(忽略第1行,设置第2行为列标题)

 实验思路:
            1. 读取excel文件 ---> 生成Dataframe ---> 替换列标题 ---> 删去第一行数据 --->数据筛选

            2. 读取excel文件(设置相关参数,完成前两行的处理) ---> 生成Dataframe ---> 数据筛选




  实验过程:


(一)准备工作


      1: 思路1:


          1.1: 使用pandas库读取excel文件可用语句:

#  读字符(r)+  文件所在地址
excel_file = r'/home/excel/python_program/data/lab1/SH#600519.xlsx'

# 读取 excel文件
data = pd.read_excel(excel_file)

          1.2:生成一组 DataFrame:

df = pd.DataFrame(data)

          1.3: 修改列标题

head = df.columns.values.tolist()
 
'''
    打印输出原列名
'''
print(head)

            运行结果:
原列名查询

            第二行的数据才是列标题,因此我们需要替换列标题。    

            替换的方法:

 '''
修改列名:
    df.rename(columns={'原列名':'新列名'},inplace=True)
替换所有的列标题:
'''
for i in range (len(head)):
    df.rename(columns={head[i]:df.iloc[0,i]},inplace=True)

            运行结果,再次查询列标题:

'''
修改后的列名
'''
head=df.columns.values.tolist()
print(head)

修改后的列标题


          1.4: 删除数据:

              由于在生成df时,第二行数据是 【‘日期’,‘开盘’.... ,】
              查看df:
    删除数据前的df

              df的第一行数据需删除

df = df.drop(0,axis=0,inplace=False)

              到这里,我们就已经完成了df前2行的处理
处理后的df


      2: 思路2:

       2.1:在读取excel时设置相关参数:

'''
io: 文件所在目录, 
header:  取 第header行 作为列标题
skiprows: 需跳过的行数
'''
test = pd.read_excel(io=excel_file, 
                     header=1, 
                     skiprows=0)

        生成dfs :

dfs = pd.DataFrame(test)

        查看dfs :
思路2

(二)按要求筛选数据

i) 显示某个输入的日期的当日数据。(注:当日数据应包括日期、开盘、最高、最低、收盘、成交量、成交额)

df.loc[(df[head[2]]>0),head].head()

i运行结果

ii) 显示收盘价高于某个输入的价格的所有日期。

flag=(int)(input())

df.loc[
        (df[head[4]]>flag),
       head
      ].head()

ii

iii) 显示股价波动高于某个输入的值的所有日期。

flag=(int)(input())

df.loc[
        (df[head[4]]>flag),
       head
      ].head()

iii

iv) 显示成交量高于某个输入的值的所有日期。

df.loc[
      (df[head[5]]>turnover),
       head
      ].head()

iv

v)显示成交额高于某个输入的值的所有日期。

df.loc[(df[head[6]]>sums),
       [head[0],head[1],head[2],
        head[3],head[4],head[5],head[6]]
      ].head()

v

posted @ 2020-09-25 22:42  ExcelYeh  阅读(250)  评论(0)    收藏  举报