質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Python 3.x

    6878questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

n行2列のcsvファイルから、欲しい範囲のデータだけを出力させたいです。

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 399

rainrain

score 16

 前提・実現したいこと

パイソンを初めて1週間の私を助けてください。
numpyを使ってcsvファイルを読み取って表示させたいのですが、表示させたい形式が少し特殊でやり方が分からず困っています。

具体的に説明すると、、、
まずcsvはn行2列です。
そこから特定の行を指定します。特定の行を指定すると、その前後30行が出力されるプログラムが作りたいです。
例えば、50行目を指定したとすると、20行目から80行目が表示されることが理想です。

色々調べたのですが、範囲を指定する方法がさっぱり分かりません。
もっと自分で1から勉強すべきなのですが、どうしても早急に必要なので、大変申し訳ないのですがpythonに詳しい方、ぜひサンプルコードを教えていただきたいです。
よろしくお願いいたします。

 簡単な図解(数字は適当です)

1,100
2,95
3,90



20,5(ここから)



50,-145(この行を指定)



80,-295(ここまで)


  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

パイソンを初めて1週間の私を助けてください。

numpyを使う前に単純に考えてみましょう。

  • CSVファイルを読み込む
import csv

lines = []

# ファイル名は適当です
with open("test.csv", "r") as csvfile:
    rows = csv.reader(csvfile)
    for row in rows:
        # 行毎にcsvfileの中身を格納してゆきます
        lines.append(row)

Python Doc - 14.1. csv — CSV ファイルの読み書き

  • 番号リスト 特定の行を指定して、その前後30行を計算して求める
line_number = 50

before_line_number = line_number - 30
after_line_number = line_number + 30
  • 求めた前後の行が出力される
for idx, line in enumerate(lines, 1):
    if before_line_number <= idx <= after_line_numer:
        print(line)

こんな感じでしょうか。
とりあえずで組んだのでline_numberが0以下になる場合は何も考えていないです、そこはご自分で考えるようにしてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/20 12:35

    ご丁寧にありがとうございます!
    また何かあればよろしくお願いします!

    キャンセル

+1

スライスを使ってください。

Pythonのスライス

>>> import numpy as np
>>> a = np.arange(20).reshape(10,2)
>>> a
array([[ 0,  1],
       [ 2,  3],
       [ 4,  5],
       [ 6,  7],
       [ 8,  9],
       [10, 11],
       [12, 13],
       [14, 15],
       [16, 17],
       [18, 19]])
>>> a[3:7]
array([[ 6,  7],
       [ 8,  9],
       [10, 11],
       [12, 13]])

指定したindexのプラスマイナス30をスライスに与えれば大筋では大丈夫ですが、その数字が0以下とか配列のサイズ以上になっちゃったときの処理は別途考える必要があります。
あと、スライスのstart側は指定した数字のindexの要素が含まれますが、end側は含まれないので、1を足してやる必要があるかも。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

pythonの勉強より所定のファイルを早急に得る事の方が最優先であるなら、grep で対処してはどうでしょうか。 

egrep -C30 '^30,' input.txt | 標準入力を受けとる適当なpyスクリプト 

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

  • 受付中

    大量データ処理について

    ショッピングサイトのエンジニアをやってます。 以下質問がございます。 ①月の受注データ(10万件ほど)をselectして、 ②別に読み込んだcsvファイルのデータと1件ずつ突合チ

  • 受付中

    mysql;複数ファイルのインポート

    mysqlに複数のファイルを読み込ませたいです. testテーブルに001,002,003,...nnnというファイルをインポートしたいのですが,ひとつずつやっていくのは手間なので

  • 解決済

    RubyでCSVファイルとJSONファイルの読み込み、変換したJSONファイルの出力を行いたいです

    Rubyで ①CSVファイルとJSONファイルの読み込み ②読み込んだデータを用いてJSONファイルを変換 ③変換したJSONファイルの出力 を行いたいです。 (データの変換メソッ

  • 解決済

    UNIXでcsvファイルでマスターデータと比較する方法

    こんばんわ。 マスターデータをcsvファイルで出力されています。 新たに検索したいデータもcsvファイルで出力されます。 下記のような結果を望んでいます。 検索する

  • 解決済

    【Spring】csv出力の流れが知りたい

    現在上記タグの技術を使ってcsv出力を実装しようとしています。 仕様としては、 1.csv出力ボタン押下する 2.検索条件でDBからデータを取得 3.そのデータをcsv

  • 受付中

    CSVファイルの保存について

    スクレイピングをしていて、ファイルを保存したいのですが、エラーが出てしまい保存できません。以下のコードを書いているのですが、これだと保存はできないのでしょうか? CSV.op

  • 解決済

    CSVファイルに改行しつつ文字列を書き込みたい

    皆様いつもお世話になっております。 乱数を出力して、一定時間ごとにテキストに改行しつつそれを書き込みたいのですが、改行されずに一行の文字列だけが出力されてしまって困っています

  • 解決済

    WordPress:Custom Field TemplateからAdvanced Custom F...

    現在Custom Field Templateを利用しているのですが、いろいろと融通が利かなくて「Advanced custom template」にこの度移行したいと考えておりま

同じタグがついた質問を見る

  • Python 3.x

    6878questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。