精华内容
下载资源
问答
  • 我有几千只股票的csv数据,需要算所有股票在特定时间段内的收益率。但是数据里的日期信息并不统一,有的csv到2011年就没有了之后的信息了,有的csv仅有2012年1月后的数据。所以用pandas读取数据后,希望筛选数据一个...

    我有几千只股票的csv数据,需要算所有股票在特定时间段内的收益率。

    但是数据里的日期信息并不统一,有的csv到2011年就没有了之后的信息了,有的csv仅有2012年1月后的数据。

    所以用pandas读取数据后,希望筛选数据一个特定时间段里的数据(比如2012-07到2012-08两个月的数据)。

    但是把时间作为索引后,根本无法将没有该时间段内数据的股票给跳过,总是报错,搜了各种pandas处理时间的方法也没能解决。

    以下是csv数据截图/所有csv文件都是这样的形式

    import os

    import pandas as pd

    import numpy as np

    stdic=os.listdir(os.listdir(os.getcwd())[1])

    del stdic[0]

    date=['2012-07','2012-08']

    #计算排序期J、持有期K内的对数收益率

    def creturn(data,J,K):

    r=['','']

    r[0] = np.log(data[date[J-1]]['Adj Close'][0]/data[date[0]]['Adj Close'][-1]) #排序期收益率

    r[1] = np.log(data[date[J+K-1]]['Adj Close'][0]/data[date[J]]['Adj Close'][-1]) #持有期内收益率

    return r

    rank=[]

    #对每一个股票csv数据进行以上的计算并放入rank列表中

    for item in stdic:

    fname = 'data/'+item

    data=pd.read_csv(fname)

    data=data.dropna()

    data['Date'] = pd.to_datetime(data['Date'])

    data = data[(data['Date'] >='20120701') & (data['Date'] <= '20120831')]

    data=data.set_index(['Date'])

    rank.append(creturn(data,1,1)[0])

    报错的原因发现是,到了第10个csv文件的时候,csv里根本没有2012-07的数据,所以无法进行计算。

    但是,就是无法把这种没有特定时段数据的文件跳过,不知道怎么筛选。。

    希望各位大神能指点训斥一下。。。!

    展开全文
  • 1. 数据筛选a b c0 0 2 41 6 8 102 12 14 163 18 20 224 24 26 285 30 32 346 36 38 407 42 44 468 48 50 529 54 56 58(1)单条件筛选df[df[‘a’]>30]如果想筛选 a 列的取值大于 30 的记录, 但是之显示满足条件的...

    1. 数据筛选

    a b c

    0 0 2 4

    1 6 8 10

    2 12 14 16

    3 18 20 22

    4 24 26 28

    5 30 32 34

    6 36 38 40

    7 42 44 46

    8 48 50 52

    9 54 56 58

    (1)单条件筛选

    df[df[‘a’]>30]

    如果想筛选 a 列的取值大于 30 的记录, 但是之显示满足条件的 b,c 列的值可以这么写

    df’b’,’c’[df[‘a’]>30]

    使用 isin 函数根据特定值筛选记录。筛选 a 值等于 30 或者 54 的记录

    df[df.a.isin([30, 54])]

    (2)多条件筛选

    可以使用 &(并)与 | (或)操作符或者特定的函数实现多条件筛选

    使用 & 筛选 a 列的取值大于 30,b 列的取值大于 40 的记录

    df[(df[‘a’] > 30)& (df[‘b’] > 40)]

    (3)索引筛选

    a. 切片操作

    df[行索引,列索引] 或 df列名 1,列名 2

    #使用切片操作选择特定的行

    df[1:4]

    #传入列名选择特定的列

    df’a’,’c’

    b. loc 函数

    当每列已有 column name 时,用 df [‘a’] 就能选取出一整列数据。如果你知道 column names 和 index,且两者都很好输入,可以选择 .loc 同时进行行列选择。

    In [28]: df.loc[0,‘c’]

    Out[28]: 4

    In [29]: df.loc[1:4,[‘a’,‘c’]]

    Out[29]:

    a c

    1 6 10

    2 12 16

    3 18 22

    4 24 28

    In [30]: df.loc[[1,3,5],[‘a’,‘c’]]

    Out[30]:

    a c

    1 6 10

    3 18 22

    5 30 34

    c. iloc 函数

    如果 column name 太长,输入不方便,或者 index 是一列时间序列,更不好输入,那就可以选择 .iloc 了,该方法接受列名的 index,iloc 使得我们可以对 column 使用 slice(切片)的方法对数据进行选取。这边的 i 我觉得代表 index,比较好记点。

    In [35]: df.iloc[0,2]

    Out[35]: 4

    In [34]: df.iloc[1:4,[0,2]]

    Out[34]:

    a c

    1 6 10

    2 12 16

    3 18 22

    In [36]: df.iloc[[1,3,5],[0,2]]

    Out[36]:

    a c

    1 6 10

    3 18 22

    5 30 34

    In [38]: df.iloc[[1,3,5],0:2]

    Out[38]:

    a b

    1 6 8

    3 18 20

    5 30 32

    d. ix 函数

    ix 的功能更加强大,参数既可以是索引,也可以是名称,相当于,loc 和 iloc 的合体。需要注意的是在使用的时候需要统一,在行选择时同时出现索引和名称, 同样在同行选择时同时出现索引和名称。

    df.ix[1:3,[‘a’,‘b’]]

    Out[41]:

    a b

    1 6 8

    2 12 14

    3 18 20

    In [42]: df.ix[[1,3,5],[‘a’,‘b’]]

    Out[42]:

    a b

    1 6 8

    3 18 20

    5 30 32

    In [45]: df.ix[[1,3,5],[0,2]]

    Out[45]:

    a c

    1 6 10

    3 18 22

    5 30 34

    e. at 函数

    根据指定行 index 及列 label,快速定位 DataFrame 的元素,选择列时仅支持列名。

    In [46]: df.at[3,‘a’]

    Out[46]: 18

    f. iat 函数

    与 at 的功能相同,只使用索引参数

    In [49]: df.iat[3,0]

    Out[49]: 18

    展开全文
  • 1.53,1.22,0.96,0.24,1.22,1.22,2.12,0.76,0.992,1.17,1.52,0.67,0.93,0.14,1.60,1.23,2.22,0.55,0.653,2.21,1.52,0.66,0.33,0.15,1.72,1.18,1.45,0.98,0.33我想读取csv文件中除了每行的第一个值以外的所有数据。...

    我有一个csv文件如下:

    1,1.23,1.53,1.22,0.96,0.24,1.22,1.22,2.12,0.76,0.99

    2,1.17,1.52,0.67,0.93,0.14,1.60,1.23,2.22,0.55,0.65

    3,2.21,1.52,0.66,0.33,0.15,1.72,1.18,1.45,0.98,0.33

    我想读取csv文件中除了每行的第一个值以外的所有数据。在

    然后对特定的数据范围进行归一化。在

    多亏了stackoverflow,我学会了阅读相关数据,并设法研究了足够多的Python来规范化数据。在

    此数据(如果我的代码正确)将数据规范化为0到1的范围。在

    但是,我无法解决如何将数据标准化到不同的范围(例如0.001到1)。在import numpy

    array = numpy.genfromtxt('Anaconda3JamesData/james_test_3.csv', delimiter=',')

    # get minimum and maximum values of

    # all data except the first value in each row

    maximum=array[:, 1:].max()

    minimum=array[:, 1:].min()

    print (minimum)

    print (maximum)

    # display the contents of the csv file except the first value in each row

    print (array[:,1:])

    # normalise all data in the array except

    # the first value of each row

    x = (array[:,1:] - minimum)/(maximum - minimum)

    print (x)

    我的输出是:

    0.14

    2.22

    [[1.23 1.53 1.22 0.96 0.24 1.22 1.22 2.12 0.76 0.99]

    [1.17 1.52 0.67 0.93 0.14 1.6 1.23 2.22 0.55 0.65]

    [2.21 1.52 0.66 0.33 0.15 1.72 1.18 1.45 0.98 0.33]]

    [[0.52403846 0.66826923 0.51923077 0.39423077 0.04807692 0.51923077

    0.51923077 0.95192308 0.29807692 0.40865385]

    [0.49519231 0.66346154 0.25480769 0.37980769 0。0.70192308

    0.52403846 1。0.19711538 0.24519231]

    [0.99519231 0.66346154 0.25 0.09134615 0.00480769 0.75961538

    0.5 0.62980769 0.40384615 0.09134615]]

    这确实看起来我的规范化代码是正确的。它正在规范化0到1之间的所需数据。但是如何将0.001到1之间的数据标准化呢?谢谢您。在

    展开全文
  • 如同生物信息领域中的FASTA/Q格式一样,CSV/TSV作为计算机、数据科学和生物信息的基本格式,应用非常广泛。常用的处理软件包括:以微软Excel为代表的电子表格软件Notepad++/SublimeText等文本编辑器sed/awk/cut等...

    如同生物信息领域中的FASTA/Q格式一样,CSV/TSV作为计算机、数据科学和生物信息的基本格式,应用非常广泛。常用的处理软件包括:以微软Excel为代表的电子表格软件

    Notepad++/SublimeText等文本编辑器

    sed/awk/cut等Shell命令

    各种编程语言的数据处理库。

    然而,电子表格软件和文本编辑器固然强大,但依赖鼠标操作,不适合批量处理;sed/awk/cut等Shell命令主要用于通用的表格数据,不适合含有标题行的CSV格式;为了一个小操作写Python/R脚本也有点小题大作,且难以复用。

    开发csvtk前现有的工具主要是Python写的csvkit,Rust写的xsv,C语言写的miller,都各有优劣。作者沈伟之前刚开发完seqkit,投文章过程中时间充足,便想趁热再造一个轮子。

    所以我决定写一个命令行工具来满足CSV/TSV格式的常见操作,这就是csvtk了。

    安装

    支持Windows/Mac/Linux的32和64位系统。用户根据自己的系统自取。

    Linux 64位Ubuntu为例# 下载,大小为7.46M

    wget https://github.com/shenwei356/csvtk/releases/download/v0.19.1/csvtk_linux_amd64.tar.gz

    # 解压后为16M

    tar xvzf csvtk_linux_amd64.tar.gz

    # 添加环境变量自己用,Ubuntu默认~/bin为环境变量

    mkdir -p $HOME/bin/; cp csvtk $HOME/bin/

    # 添加系统变量给所有人用 (可选)

    sudo cp csvtk /usr/local/bin/

    # Conda安装(依赖关系检查可能要好久)

    conda install -c bioconda csvtk

    Windows 64位版

    介绍

    基本信息工具类型: 命令行工具,子命令结构

    支持格式: CSV/TSV, plain/gzip-compressed

    编程语言: Go

    支持平台: Linux, OS X, Windows 等

    发布方式: 单一可执行二进制文件,下载即用

    发布平台: Github, Bioconda

    特性跨平台

    轻量,无任何依赖,无需编译、配置,下载即用

    快速

    支持stdin和gzip压缩的输入和输出文件,便于流处理

    27个子命令提供多种实用的功能,且能通过命令行管道组合

    支持Bash自动补全

    支持简单的绘图

    功能

    在开发csvtk之前的两三年间,我已经写了几个可以复用的Python/Perl脚本(https://github.com/shenwei356/datakit) ,包括csv2tab、csvtk_grep、csv_join、csv_melt,intersection,unique。所以我的计划是首先集成这些已有的功能,随后根据需求进行扩展。

    到目前为止,csvtk已有27个子命令,分为以下几大类:信息headers 直观打印标题行(操作列数较多的CSV前使用最佳)

    stats 基本统计

    stats2 对选定的数值列进行基本统计

    格式转化pretty 转为美观、可读性强的格式(最常用命令之一)

    csv2tab 转CSV为制表符分割格式(TSV)

    tab2csv 转TSV为CSV

    space2tab 转空格分割格式为TSV

    transpose 转置CSV/TSV

    csv2md 转CSV/TSV为makrdown格式(写文档常用)

    集合操作head 打印前N条记录

    sample 按比例随机采样

    cut 选择特定列,支持按列或列名进行基本选择、范围选择、模糊选择、负向选择(最常用命令之一,非常强大)

    uniq 无须排序,返回按指定(多)列作为key的唯一记录(好绕。。)

    freq 按指定(多)列进行计数(常用)

    inter 多个文件间的交集

    grep 指定(多)列为Key进行搜索(最常用命令之一,可按指定列搜索)

    filter 按指定(多)列的数值进行过滤

    filter2 用类似awk的数值/表达式,按指定(多)列的数值进行滤

    join 合并多个文件(常用)

    编辑rename 直接重命名指定(多)列名(简单而实用)

    rename2 以正则表达式重命名指定(多)列名(简单而实用)

    replace 以正则表达式对指定(多)列进行替换编辑(最常用命令之一,可按指定列编辑)

    mutate 以正则表达式基于已有列创建新的一列(常用于生成多列测试数据)

    mutate2 用类似awk的数值/表达式,以正则表达式基于已有(多)列创建新的一列(常用)

    gather 类似于R里面tidyr包的gather方法

    排序sort 按指定(多)列进行排序

    绘图plot 基本绘图plot hist histogram

    plot box boxplot

    plot line line plot and scatter plot

    其它version   版本信息和检查新版本

    genautocomplete 生成支持Bash自动补全的配置文件,重启Terminal生效。

    使用输入数据要求每行的列数一致,空行也会报错

    csvtk默认输入数据含有标题行,如没有请开启全局参数-H

    csvtk默认输入数据为CSV格式,如为TSV请开启全局参数-t

    输入数据列名最好唯一无重复

    如果TSV中存在双引号"",请开启全局参数-l

    csvtk默认以#开始的为注释行,若标题行含#,请给全局参数-C指定另一个不常见的字符(如$)

    例子

    下载软件和测序数据git clone git@github.com:shenwei356/csvtk.git

    cd csvtk/testdata/

    注意:有些测序数据可能不在testdata中,可以自行根据下面页面显示内容保存;

    软件默认为csv,使用-t参数改为tsv

    命令后面可接输入文件,作者用cat inputfile 格式使命令中无输入文件,从 | 管道符读取数据,代码阅读更清楚示例数据# 查看一个逗号分隔的名单示例文件

    $ cat names.csv

    id,first_name,last_name,username

    11,"Rob","Pike",rob

    2,Ken,Thompson,ken

    4,"Robert","Griesemer","gri"

    1,"Robert","Thompson","abc"

    NA,"Robert","Abel","123"

    增强可读性# 格式化结果按列对齐,补空格

    $ cat names.csv  | csvtk pretty

    id   first_name   last_name   username

    11   Rob          Pike        rob

    2    Ken          Thompson    ken

    4    Robert       Griesemer   gri

    1    Robert       Thompson    abc

    NA   Robert       Abel        123

    转为markdown,写博客、公众号超级有用$ cat names.csv | csvtk csv2md

    id |first_name|last_name|username

    :--|:---------|:--------|:-------

    11 |Rob       |Pike     |rob

    2  |Ken       |Thompson |ken

    4  |Robert    |Griesemer|gri

    1  |Robert    |Thompson |abc

    NA |Robert    |Abel     |123

    效果

    id |first_name|last_name|username

    :—|:————-|:————|:———-

    11 |Rob       |Pike     |rob

    2  |Ken       |Thompson |ken

    4  |Robert    |Griesemer|gri

    1  |Robert    |Thompson |abc

    NA |Robert    |Abel     |123

    用列位置或列名来选择指定列,可改变列的顺序# 按列位置选择并可设置顺序

    $ cat names.csv | csvtk cut -f 3,1 | csvtk pretty

    # 按列名选择并可重排序列

    $ cat names.csv | csvtk cut -f last_name,id | csvtk pretty

    last_name   id

    Pike        11

    Thompson    2

    Griesemer   4

    Thompson    1

    Abel        NA

    用通配符选择多列# 匹配内容可不可引号,有引号阅读更方便

    # *代表包括任意,多选择可用逗号,并行

    $ cat names.csv | csvtk cut -F -f '*name,id' | csvtk pretty

    first_name   last_name   username   id

    Rob          Pike        rob        11

    Ken          Thompson    ken        2

    Robert       Griesemer   gri        4

    Robert       Thompson    abc        1

    Robert       Abel        123        NA

    删除第2,3列(下列第二种方法是选定范围,但-3在前,-2在后)# 指定列号

    $ cat names.csv | csvtk cut -f -2,-3 | csvtk pretty

    # 指定列范围

    $ cat names.csv | csvtk cut -f -3--2 | csvtk pretty

    # 指定列名

    $ cat names.csv | csvtk cut -f -first_name,-last_name | csvtk pretty

    id   username

    11   rob

    2    ken

    4    gri

    1    abc

    NA   123

    按指定列搜索,默认精确匹配# -f指定id列,-p指定模式,默认匹配单元格,匹配1,不会匹配11。模糊可用通配符

    $ cat names.csv | csvtk grep -f id -p 1 | csvtk pretty

    id   first_name   last_name   username

    1    Robert       Thompson    abc

    模糊搜索(正则表达式)# -r开启模糊匹配,只要包含即可

    $ cat names.csv | csvtk grep -f id -p 1 -r | csvtk pretty

    id   first_name   last_name   username

    11   Rob          Pike        rob

    1    Robert       Thompson    abc

    用文件作为模式来源# 经常需要配置多个值,按列表数据筛选很方便

    $ cat names.csv | csvtk grep -f id -P id-files.txt

    对指定列做简单替换# 支持正则的替换,匹配内容保存为$1,再修饰

    $ cat names.csv | csvtk replace -f id -p '(\d+)' -r 'ID: $1' | csvtk pretty

    id       first_name   last_name   username

    ID: 11   Rob          Pike        rob

    ID: 2    Ken          Thompson    ken

    ID: 4    Robert       Griesemer   gri

    ID: 1    Robert       Thompson    abc

    NA       Robert       Abel        123

    用key-value文件来替换(seqkit和brename都支持类似操作)# 指定列表的替换

    $ cat data.tsv

    name    id

    A       ID001

    B       ID002

    C       ID004

    $ cat alias.tsv

    001     Tom

    002     Bob

    003     Jim

    # nr代表行号,kv代表将匹配的$1替换为-k文件中第2列

    $ csvtk replace -t -f 2 -p "ID(.+)" -r "N: {nr}, alias: {kv}" -k alias.tsv data.tsv

    name    id

    A       N: 1, alias: Tom

    B       N: 2, alias: Bob

    C       N: 3, alias: 004

    合并表格,需要分别指定各文件中的key列:默认均为第一列;若列(名)相同提供一个;若不同用分号分割$ cat phones.csv

    username,phone

    gri,11111

    rob,12345

    ken,22222

    shenwei,999999

    # 按名合并,包括不匹配的值

    $ csvtk join -f 'username;username' --keep-unmatched names.csv phones.csv | csvtk pretty

    id   first_name   last_name   username   phone

    11   Rob          Pike        rob        12345

    2    Ken          Thompson    ken        22222

    4    Robert       Griesemer   gri        11111

    1    Robert       Thompson    abc

    NA   Robert       Abel        123

    以上的内容是否能加速你的分析工作。

    扩展阅读:

    猜你喜欢

    写在后面

    为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外5000+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍未解决群内讨论,问题不私聊,帮助同行。

    学习扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

    展开全文
  • 本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明1. 数据筛选a b c0 0 2 41 6 8 102 12 14 163 18 20 224 24 26 285 30 32 346 36 38 407 42 44 468 48 50 529 54 56 ...
  • 本文主要介绍通过Python提取csv文件中数据,并对数据进行处理。 编译器:Anaconda3 语言:Python3 提示:以下是本篇文章正文内容,本文仅为作者作为学习笔记使用,大佬勿喷 一、pandas与numpy? pandas是一个强大的...
  • 我有一个相当大的CSV文件,我只关心包含单词“Slave”的行……一些包含Slave的行与其他行不完全相同,但是它们都包含单词Slave。在我想丢弃所有其他行,然后处理另一列中剩余的数据。在问题是:另一列也不是干净的...
  • 在这些情况下,我们可以用Python筛选出特定的行来使用。下面主要来讲在输入文件中筛选出特定行的3种方法:1.行中的值满足某个条件;2.行中的值属于某个集合;3.行中的值匹配于某个模式(正则表达式)。其实,这三种...
  • 这是问题:Find out how much time and over how many separate days did R.Lennon work on administering the Jira Server between August and September.csv里是这样的我才开始学习timeseries部分,大概逻辑有了,...
  • pd.read_csv(sample.csv) df['month'] = df['Start Time'].dt.month df['day_of_week'] = df['Start Time'].dt.weekday_name 但我有一个要求,要求用户输入月份或日期,然后根据用户输入的值,需要创建一个新的数据,并...
  • 一、第一种方法读取后为list,再转化为数据框 import csv from pandas.core.frame import DataFrame csv_file=csv.reader(open('合并.csv','r')) content=[] #用来存储整个文件的数据,存成一个列表,列表的每一个...
  • 然后,代码应检查此客户端是否已注册,并且可以在整个客户端csv中找到他的数据(包括电子邮件),并将此特定原始数据提供给用户,以便不必再次键入数据。我尝试了下面的代码,但它只是迭代我的csv中的所有raws,因为...
  • 2.2筛选特定的行:行中的值满足某个条件行中的值属于某个集合行中的值匹配于某个模式(即:正则表达式)2.2.1:行中的值满足于某个条件:基础python版:1 #!/usr/bin/env python32 importcsv3 importsys45 input_...
  • 1. 数据筛选用于展示我们所需要的数据以方便我们对数据进行分析。简单用一个例子来说明,在以下的成绩表中我们只想查看IFM这一个班的成绩。2. 首先将鼠标定位在数据源的任何一个数据单元格。3. 其次,在菜单栏的...
  • 2019-03-04 遇到的一点小问题使用Python scapy分析pcap文件时,有很多不需要的数据,每次测试时打开文件都要一小会,然后网上很多数据分析教程都是分析的csv文件,所以在对数据筛选后,将需要的信息存储为comma-...
  • 文章大纲:如何更有效的导入你的数据全面的观察数据设置索引设置标签处理缺失值删除重复项数据类型转换筛选数据数据排序处理文本合并&匹配导入数据:pd.read_excel("aa.xlsx") pd.read_csv("aa.xlsx") pd.read...
  • 本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明 1. 数据筛选 a b c 0 0 2 4 1 6 8 10 2 12 14 16 3 18 20 22 4 24 26 28 5 30 32 34 6 36 38 40 7 ...
  • jsPsych Crash Course 02传送门:Phantoms:jsPsych Crash Course 02: 为jsPsych项目添加亿点点细节​zhuanlan....那么在jsPsych中,怎么记录实验数据呢?在前面的教程中,我们提到过用jsPsych.data.displayData()方...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 287
精华内容 114
关键字:

python筛选csv数据

python 订阅