タグ付けされた質問 「python」

Pythonは、マルチパラダイム、動的型付け、多目的プログラミング言語です。これは、学習、理解、使用が迅速で、クリーンで統一された構文を適用できるように設計されています。Python 2は2020年1月1日をもって正式にサポートされなくなりました。それでも、バージョン固有のPythonの質問については、[python-2.7]または[python-3.x]タグを追加します。Pythonのバリアントまたはライブラリ(Jython、PyPy、Pandas、Numpyなど)を使用する場合は、タグに含めてください。


16
パンダを使用した「大容量データ」ワークフロー
私はパンダを学びながら何ヶ月もの間この質問への答えを困惑させようとしました。私は毎日の仕事にSASを使用しており、コア外のサポートに最適です。しかし、SASは他の多くの理由からソフトウェアの一部としては恐ろしいものです。 ある日、私はSASの使用をpythonとpandasに置き換えたいと思っていますが、現在、大規模なデータセットのコア外のワークフローが不足しています。私は、分散ネットワークを必要とする「ビッグデータ」ではなく、メモリに収まりきらないがハードドライブに収まるには小さすぎるファイルについて話しているのではありません。 私の最初の考えは、を使用HDFStoreしてディスク上に大きなデータセットを保持し、分析のために必要な部分のみをデータフレームにプルすることです。他の人たちは、MongoDBをより使いやすい代替として言及しました。私の質問はこれです: 以下を達成するためのいくつかのベストプラクティスワークフローは何ですか。 フラットファイルを永続的なディスク上のデータベース構造にロードする データベースをクエリしてデータを取得し、pandasデータ構造にフィードする パンダのピースを操作した後のデータベースの更新 実世界の例は、特に「大きなデータ」でパンダを使用するすべての人から高く評価されます。 編集-これが機能する方法の例: 大きなフラットファイルを繰り返しインポートし、永続的なディスク上のデータベース構造に保存します。これらのファイルは通常、大きすぎてメモリに収まりません。 Pandasを使用するために、メモリに収まるこのデータのサブセット(通常は一度に数列のみ)を読みたいと思います。 選択した列に対してさまざまな操作を実行して、新しい列を作成します。 次に、これらの新しい列をデータベース構造に追加する必要があります。 これらの手順を実行するためのベストプラクティスの方法を見つけようとしています。パンダとpytablesに関するリンクを読むと、新しい列を追加するのが問題になるようです。 編集-ジェフの質問への具体的な回答: 私は消費者信用リスクモデルを構築しています。データの種類には、電話、SSN、および住所の特性が含まれます。プロパティ値; 犯罪歴、破産などの軽蔑的な情報...私が毎日使用するデータセットには、混合データタイプの平均で1,000〜2,000のフィールドがあります。数値データと文字データの両方の連続変数、名義変数、順序変数です。行を追加することはめったにありませんが、新しい列を作成する多くの操作を実行します。 一般的な操作では、条件付きロジックを使用して複数の列を組み合わせて、新しい複合列を作成します。たとえば、if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B'。これらの操作の結果は、データセット内のすべてのレコードの新しい列です。 最後に、これらの新しい列をディスク上のデータ構造に追加したいと思います。ステップ2を繰り返して、モデルに対する興味深い直感的な関係を見つけようとするクロス集計と記述統計を使用してデータを探索します。 通常のプロジェクトファイルは通常約1GBです。ファイルは、行が消費者データのレコードで構成されるような方法で編成されます。各行には、すべてのレコードで同じ数の列があります。これは常に当てはまります。 新しい列を作成するときに行ごとにサブセットを作成することは非常にまれです。ただし、レポートを作成したり、説明的な統計を生成したりするときに、行をサブセット化することはよくあることです。たとえば、特定の業種の単純なフリークエンシーを作成したい場合があります(小売クレジットカードなど)。これを行うには、レポートする列に加えて、基幹業務=小売のレコードのみを選択します。ただし、新しい列を作成するときは、データのすべての行と、操作に必要な列のみを取得します。 モデリングプロセスでは、すべての列を分析し、結果変数との興味深い関係を探し、それらの関係を記述する新しい複合列を作成する必要があります。私が探索する列は通常、小さなセットで行われます。たとえば、プロパティ値を扱う20列のセットに焦点を当て、それらがローンのデフォルトにどのように関連するかを観察します。それらが探索されて新しい列が作成されたら、次に大学教育などの別の列グループに進み、プロセスを繰り返します。私がやっていることは、私のデータといくつかの結果との関係を説明する候補変数を作成することです。このプロセスの最後に、これらの複合列から方程式を作成するいくつかの学習手法を適用します。 データセットに行を追加することはめったにありません。ほとんどの場合、新しい列(変数または統計/機械学習用語の機能)を作成します。

14
@propertyデコレーターはどのように機能しますか?
組み込み関数がどのように機能するかを理解したいと思いpropertyます。私を混乱させるのは、それpropertyがデコレーターとしても使用できることですが、組み込み関数として使用される場合にのみ引数を取り、デコレーターとして使用される場合は取りません。 この例はドキュメントからのものです: class C(object): def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "I'm the 'x' property.") property引数はgetx、setx、delxおよびドキュメンテーション文字列。 以下のコードでpropertyは、デコレータとして使用されています。そのオブジェクトはx関数ですが、上のコードでは、引数にオブジェクト関数の場所がありません。 class C(object): def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x …

23
Python pandasの既存のDataFrameに新しい列を追加する
名前付きの列と行ではなく、連続した番号を持つ次のインデックス付きDataFrameがあります。 a b c d 2 0.671399 0.101208 -0.181532 0.241273 3 0.446172 -0.243316 0.051767 1.577318 5 0.614758 0.075793 -0.451460 -0.012493 'e'既存のデータフレームに新しい列を追加し、データフレーム内の何も変更したくない(つまり、新しい列は常にDataFrameと同じ長さです)。 0 -0.335485 1 -1.166658 2 -0.385571 dtype: float64 e上記の例に列を追加するにはどうすればよいですか?


24
テキストファイルを文字列変数に読み込み、改行を取り除く方法は?
次のコードセグメントを使用して、Pythonでファイルを読み取ります。 with open ("data.txt", "r") as myfile: data=myfile.readlines() 入力ファイルは: LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE データを印刷すると、 ['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN\n', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE'] 私が見るように、データはlist形になっています。どうすれば文字列にできますか?そして、また、どのように私は削除しない"\n"、"["と"]"それから文字を?
964 python  string 



16
ミックスインとは何ですか?なぜそれらが便利なのですか?
「Programming Python」では、Mark Lutzが「mixins」について言及しています。私はC / C ++ / C#の出身ですが、以前にその用語を聞いたことがありません。ミックスインとは何ですか? この例の行の間を読むと(非常に長いためにリンクしています)、「適切な」サブクラス化ではなく、多重継承を使用してクラスを拡張するケースであると思います。これは正しいですか? 新しい機能をサブクラスに入れるのではなく、なぜそれをしたいのですか?それについて、ミックスイン/マルチ継承アプローチがコンポジションを使用するよりも優れているのはなぜですか? ミックスインと多重継承を区別するものは何ですか?それは単なる意味論の問題ですか?



22
Pythonでのシングルトンの作成
この質問は、シングルトンデザインパターンが望ましいかどうか、アンチパターンであるかどうか、または宗教戦争の場合ではなく、このパターンがPythonで最もPython的に実装される方法について議論するためのものです。この場合、私は「ほとんどのpythonic」を「最小の驚きの原則」に従うことを定義します。 シングルトンになる複数のクラスがあります(私のユースケースはロガー用ですが、これは重要ではありません)。単に継承したり装飾したりできるときに、追加されたガンフを使用していくつかのクラスを散らかしたくありません。 最良の方法: 方法1:デコレーター def singleton(class_): instances = {} def getinstance(*args, **kwargs): if class_ not in instances: instances[class_] = class_(*args, **kwargs) return instances[class_] return getinstance @singleton class MyClass(BaseClass): pass 長所 デコレータは、多くの場合、複数の継承よりも直感的な方法で追加されます。 短所 MyClass()を使用して作成されたオブジェクトは真のシングルトンオブジェクトですが、MyClass自体はクラスではなく関数なので、そこからクラスメソッドを呼び出すことはできません。またためm = MyClass(); n = MyClass(); o = type(n)();、その後m == n && m != o && n != …

21
値によってリスト要素を削除する簡単な方法はありますか?
a = [1, 2, 3, 4] b = a.index(6) del a[b] print(a) 上記は次のエラーを示しています: Traceback (most recent call last): File "D:\zjm_code\a.py", line 6, in <module> b = a.index(6) ValueError: list.index(x): x not in list だから私はこれをしなければなりません: a = [1, 2, 3, 4] try: b = a.index(6) del a[b] except: pass print(a) しかし、これを行う簡単な方法はありませんか?
942 python  list 



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.