Python/Pandasには比較的新しいですが、私のベルトの下で数年のプログラミングをしていますが、主にJava/C++を使用していますので、Pythonのようなスクリプト言語はありません。Pandas/Python - Excelデータ操作
私の新しい仕事は私がスクリプトのものをやっているのですが、これまでかなり基本的なものでしたので、もっと上手くやって私の上司に見せてくれることを願っています。 Pandasを使用してExcelシートから冗長性を取り除くことで、データ分析タスクの効率化を図りたいと考えていました。しかし、私が "解析"しようとしている冗長は、 "記述"内の部分文字列です。
import pandas as pd
xlsx = pd.ExcelFile('Filename.xlsx')
sheet1 = xlsx.parse(0)
私はExcelファイルを読み込み、データフレームに解析しました。私はread_csvを代わりに使うほうが簡単かもしれないが、私はそれについて考えていた頃には、私はすでに秀逸なことを追い求めていました。
ID Count#1 Count#2 Count#3 Description
1A42H4 1 0 2 Blahblah JIG GN=TRAC Blah Blah
242JB4 0 0 2 Blahblah JIG GN=SMOOTH Blah Blah
3MIVJ2 2 0 2 Blahblah JIG GN=TRAC Blah Blah
4JAXI3 1 0 3 BlahBlah JIG GN=TRAC Blah Blah
:
ここ
データは種類のレイアウトされている方法である(移行が難しいことではありませんがない限り、私は、元のファイルはスペースが区切られているとき、カンマ区切りとしてエクスポートできるかだけで混乱しています)
私はこのデータシートを解析して冗長なGN=TRAC
(まったく同じGN =何か)を探し、それらをまとめて別のデータシートにまとめたいと思います。だから私は私がすることを必要としなかったので、私は、「JIG」の文字列分割を使用することを決め、
`array = dataframe.description`
それからちょうど記述列の配列を作り、それがすべての行に対して一定でした。 I
`array[0] = Blahblah,
GN=TRAC Blah Blah`
で残っていたし、今私は、私は、配列
にそれらすべてを追加GN=TRAC
のために再びそれを隔離したかったので、そのための
`Splits = array.str.split('JIG')`
`array2[n] = splits[n][1]`
もう一度分割しましたsplits2 = array2.str.split(' ')
GN=TRAC
を最初の位置として再構成し、単独で単離する。私はちょうどオリジナルの記述に区切られたスペースをやっている可能性がありますが、私は
GN=TRAC
の場所以来解析または比較することができませんので、言葉の異なる量があるすべて変化している実感します。
これを繰り返して比較すると、私はこの小さな機能を思いつきました。
counter = 0
temp = counter + 1
print(sheet1.iloc[counter])
while counter <= len(sheet1):
if splits2[counter][0] == splits2[temp][0]:
print(sheet1.iloc[temp])
temp += 1
if splits2[counter][0] != splits2[temp][0]:
temp += 1
counter += 1
しかし、私はここで過去には行きません。私は最初の行GN=TRAC
の値を持つ冗長行をすべて繰り返して見つけることができますが、カウンタは比較のために次の行を反復しません。私はいくつかのバリエーションを試しましたが、私は新しい目を望んでいました。上の表に基づいて、2番目の行に移動し、GN=SMOOTH
に一致し、counter
が最後の反復された行に達するまでオンとオンになるすべての行を検索します。
最後に、GN=?
に基づいてまとめて出力xlsxにまとめておくとよいでしょう。私はwriter
とto_excel
があることを認識していますが、私はそれをどのように使用するのか分かりません。私はできるだけ多くのドキュメントを読んでいますが、私はそれがかなり複雑である理由を助けるために使うことができる関数があるようには見えません(私はそれをより効率的でスクリプト可能にする方法を教えてください。後で一般化できる)
psエクセルに書き込む方法もありますか?Count#1
の降順ですか?
そのwhileループの字下げを正しくコピーしてもよろしいですか?インデントはPythonのシンタックスの一部です(ここを参照)(http://www.diveintopython.net/getting_to_know_python/indenting_code.html) –
@lerenardこれをキャッチすることに感謝しました。インデントは、実際に実行するときれいです。 – uanaka
あなたはまだインデントの外側に 'counter + = 1'部分があります。そのループは決して終わらないでしょう。 –