ersetzen sie ungültige werte durch keine in pandas dataframe
<p>gibt es eine methode zum ersetzen von werten durch <code>none</code> in pandas in python?</p><p>sie können <code>df.replace('pre', 'post')</code> verwenden und einen wert durch einen anderen ersetzen. dies ist jedoch nicht möglich, wenn sie den wert <code>none</code> verwenden möchten. wenn sie dies versuchen, erhalten sie ein seltsames ergebnis.</p><p>also hier ist ein beispiel:</p><pre><code>df = dataframe(['-',3,2,5,1,-5,-1,'-',9]) df.replace('-', 0) </code></pre><p>was ein erfolgreiches ergebnis zurückgibt.</p><p>aber,</p><pre><code>df.replace('-', none) </code></pre><p>das ein folgendes ergebnis liefert:</p><pre><code>0 0 - // this isn't replaced 1 3 2 2 3 5 4 1 5 -5 6 -1 7 -1 // this is changed to `-1`... 8 9 </code></pre><p>warum wird ein so seltsames ergebnis zurückgegeben?</p><p>da ich diesen datenrahmen in die mysql-datenbank einfügen möchte, kann ich in keinem element meines datenrahmens <code>nan</code> werte einfügen und möchte stattdessen <code>none</code> einfügen. sicherlich können sie zuerst <code>'-'</code> in <code>nan</code> ändern und dann <code>nan</code> in <code>none</code> konvertieren, aber ich möchte wissen, warum sich der datenrahmen so schrecklich verhält .</p><blockquote> <p>getestet auf pandas 0.12.0 dev auf python 2.7 und os x 10.8. python ist eine vorinstallierte version auf os x und ich haben zu ihrer information pandas mithilfe des scipy superpack-skripts installiert.</p> </blockquote>
<p>in späteren versionen von pandas ergibt dies einen typeerror:</p><pre><code>df.replace('-', none) typeerror: if "to\_replace" and "value" are both none then regex must be a mapping </code></pre><p>sie können dies tun, indem sie entweder eine liste oder ein wörterbuch übergeben:</p><pre><code>in [11]: df.replace('-', df.replace(['-'], [none]) # or .replace('-', {0: none}) out[11]: 0 0 none 1 3 2 2 3 5 4 1 5 -5 6 -1 7 none 8 9 </code></pre><p>ich empfehle jedoch die verwendung von nans anstelle von none:</p><pre><code>in [12]: df.replace('-', np.nan) out[12]: 0 0 nan 1 3 2 2 3 5 4 1 5 -5 6 -1 7 nan 8 9 </code></pre>
<p>es gibt optionen, die ihnen dabei helfen:</p><pre><code> --insert-ignore insert rows with insert ignore. --replace use replace into instead of insert into. -t, --no-create-info don't write table creation info. </code></pre><p>denken sie an dieses paradigma</p><ul> <li>mysqldump alles von db1 in dump1</li> <li>laden sie dump1 in db3</li> <li>mysqldump alles aus db2 mit --replace (oder --insert-ignore) und --no-create-info in dump2</li> <li>laden sie dump2 in db3</li> </ul> Wenn eine Spalte in der Datenbank nullfähig ist, hat die Ergebnisklasse auch eine nullfähige Eigenschaft. 

 Wenn beispielsweise eine `Order` eine `Datetime` Spalte mit dem Namen `CreatedDate` , sieht die resultierende `Order` Klasse in etwa wie folgt aus: 


```
public partial class Order: EntityObject
{
  ...
  private DateTime? _createdDate;
  ...
}

```
  Wenn \_ `createdDate` keinen Wert hat, wenn Sie `ObjectContext.SaveChanges()` aufrufen, wird eine `System.DBNull` automatisch als Teil des Befehls insert oder update an die Datenbank gesendet. 

 Hoffe das hilft Alex Der Grund für das Problem war ein Fehler in der Effort-Datenbank. Wenn die berechnete Spalte auf nicht nullwertfähigen Spalten basiert, kann die berechnete Spalte auch automatisch nicht nullwertfähig werden. Daher erwartete die Effort-Datenbank einen Wert ungleich Null. Mit dem neuesten Update ist das Problem behoben. Sie müssen das globale `EntityFrameworkEffortManager.UseDefaultForNotNullable` Flag auf true setzen. 

 Siehe die [Ausgabe auf Github](https://github.com/zzzprojects/EntityFramework-Effort/issues/62#issuecomment-471199839) <p>die standardmethode für die angabe des objekttyps ist entweder <a href="http://search.cpan.org/perldoc?perlfunc#ref"><code>ref</code></a> oder <a href="http://search.cpan.org/perldoc?scalar::util"><code>scalar::util</code></a> <code>::blessed</code>. wenn sie<em> wissen </em>das objekt gesegnet ist, geben sie dieselbe information zurück. </p><pre><code>my $class1 = blessed( $obj ); my $class2 = ref $obj; </code></pre><p><code>ref</code> gibt jedoch auch 'hash' für nicht gesegnete hashes zurück, während <code>blessed</code> dieses spiel ablehnt. </p><p>für eine liste von methoden ist es für den gesegneten zeigerstil eines perl-objekts einfach, eine davon selbst zu codieren. der folgende code funktioniert ziemlich gut für mich. es gibt die namen der funktionen (diejenigen, die den &quot;code-slot&quot; des angegebenen namens annehmen) zurück, die dem paket zugeordnet sind, das sie definiert. </p><pre><code>sub class\_methods { use class::isa; my $obj = shift; return unless ref( $obj ); my %meth\_names; foreach my $anc ( class::isa::self\_and\_super\_path( ref $obj ), 'universal' ) { my $stash = \%{"$anc\::"}; my @funcs = grep { m/^[\_\p{alpha}]/ # begins with \_ or alpha &amp;&amp; !exists $meth\_names{$\_} # no clobbering &amp;&amp; defined *{$stash-&gt;{$\_}}{code} # has a filled code slot } keys %$stash ; # assign to the "hash slice", keyed by all the entries in @funcs # the value of $anc repeated as many times as elements in @funcs. @meth\_names{@funcs} = ( $anc ) x @funcs; } return %meth\_names; } </code></pre><ul> <li><p>dies funktioniert auch für relativ komplexe objekte, aber wenn das besitzende paket eine menge generierten codes enthält, ist es nicht besonders hilfreich zu wissen, in welchem ​​paket die generatoren den code-pointer stecken. es wird mehr bedeuten, welches paket zu finden ist generiert den code. </p></li> <li><p>ist dies der fall, erhalten sie<em> might </em>den code aus der ausführung ihres codes, einschließlich <a href="http://search.cpan.org/perldoc?data::dumper"><code>data::dumper</code></a> und setzen von <code>$data::dumper::deparse</code> auf 1 wie folgt: (<code>local $data::dumper::deparse = 1;</code>) und dann den code-zeiger wie folgt: <code>say dumper( $code\_ref );</code></p></li> <li><p>es<em> won't </em>funktioniert für gültige methoden, die noch mit einer beliebigen <code>autoload</code>-methode erstellt werden müssen. wenn sie diese in der liste sehen, macht das objekt möglicherweise mehr, aber was es alles tut, wissen sie nicht.</p></li> <li><p>die &quot;basisklasse&quot; <code>universal</code> ist enthalten, da diese klasse verhalten enthält, das vom objekt verwendet werden kann. </p></li> </ul><p>viel glück.</p> Ähm Du sollst eine Wertetabelle machen. D.h. für x Sachen im Bereich von -5 bis 1 einsetzen und dazu die y-Koordinate berechnen. Die Punkte aus x und y Koordinaten dann in ein Koordinatensystem einzeichnen.


Was kannst du daran nicht? 1. Ich führe den Beweis per Annahme des Gegenteils.

f heißt injektiv, wenn

∀(x1, x2) ∈K2: f(x1)=f(x2) ⇒ x1=x2

Das Gegenteil davon ist:

∃(x1,x2) ∈K2: f(x1)=f(x2) aber  x1≠x2

Wenn also f(x1) = f(x2) gilt, dann muss die Differenz die Nullmatrix sein.

$$ f \left( x \_ { 1 } \right) - f \left( x \_ { 2 } \right) = \left( \begin{array} { c } { 1 } & { x \_ { 1 } } \\ { 0 } & { 1 } \end{array} \right) - \left( \begin{array} { c } { 1 } & { x \_ { 2 } } \\ { 0 } & { 1 } \end{array} \right) = \left( \begin{array} { c c } { 0 } & { x \_ { 1 } - x \_ { 2 } } \\ { 0 } & { 0 } \end{array} \right) $$

Es gilt also

x1-x2 = 0

⇔ x1 = x2

was einen Widerspruch zur Annahme darstellt, dass x1 und x2 verschieden sind.

Also ist f injektiv.

2.)  
 Hier kann man einfach den Beweis durch Nachrechnen führen:

$$ f ( x ) f ( y ) = \left( \begin{array} { l l } 1 & x \\ 0 & 1 \end{array} \right) \left( \begin{array} { l l } 1 & y \\ 0 & 1 \end{array} \right) = \left( \begin{array} { c } { 1 \cdot 1 + x \cdot 0 } & { 1 \cdot y + x \cdot 1 } \\ { 0 \cdot 1 + 1 \cdot 0 } & { 0 \cdot y + 1 \cdot 1 } \end{array} \right) = \left( \begin{array} { c c } { 1 } & { x + y } \\ { 0 } & { 1 } \end{array} \right) = f ( x + y ) $$ Ich denke mal, mit Text auf der X-Achse kannst Du kein **Punkt-Diagramm** erstellen!  

Macht imho auch keinen Sinn.  

Um ein Diagramm zu erstellen, wie Du es haben möchtest, würde ich es so machen:  

Wertereihen markieren/  

Einfügen --> **Linie**/  

OK!  

Dann:  

Rechtsklick auf die Linie (genau treffen!)/  

Datenreihen formatieren/  

Markierungsoptionen -->Automatisch (oder was auswählen)  
**Linienfarbe: "KEINE Linie"**  

Fertig.  

Hilft Dir das weiter? weiß nicht, obs klappt, Diagramme sind auch meine Stärke nicht, im Kopf schon gleich gar nicht, aber versuch doch mal, die x-Achse manuell fallend festzulegen, also nicht von zB min 0..max100, sondern von 100..0


Oder Du manipulierst die Werte: in A11: =max($A10:$E10)-A10, rüberziehen.  

(oder =100-A10). Wäre **alternativ** auch für y denkbar (nicht beides gleichzeitig!).
Auch -A10 könnte gehen, wenn Dich das negative Vorzeichen nicht stört. 


Dabei kannst Du vor E:E immer wieder eine Spalte einsetzen. das Diagramm übernimmt das aber nur vielleicht, wenn Du schreibst **"='Tabelle1'!$A$10:$E$10"** . Alle anderen Bezüge entsprechend. Aloha :)


Ich hoffe, dass ich den Aufbau der Determinante richtig verstanden habe. Um die Idee zu verdeutlichen, schreibe ich die ersten 4 Fälle einfach mal auf:


Bei \(n=1\) ist nicht viel zu tun:$$D\_1=\left|\begin{array}{c}1\end{array}\right|=1$$


Bei \(n=2\) addiere ich Zeile 1 zu Zeile 2 und ziehe danach aus Zeile 2 den Faktor vor die Determinante:$$D\_2=\left|\begin{array}{c}1 & 1\\-1 & 1\end{array}\right|=\left|\begin{array}{c}1 & 1\\0 & 2\end{array}\right|=2\cdot\left|\begin{array}{c}1 & 1\\0 & 1\end{array}\right|=2$$
  



Bei \(n=3\) addiere ich Zeile 1 zu Zeile 2 und ziehe danach aus Zeile 2 den Faktor vor die Determinante:$$D\_3=\left|\begin{array}{c}1 & 1 & 0\\-1 & 1 & 4\\0 & -1 & 1\end{array}\right|=\left|\begin{array}{c}1 & 1 & 0\\0 & 2 & 4\\0 & -1 & 1\end{array}\right|=2\cdot\left|\begin{array}{c}1 & 1 & 0\\0 & 1 & 2\\0 & -1 & 1\end{array}\right|$$Jetzt addiere ich weiter Zeile 2 zu Zeile 3 und ziehe aus Zeile 3 den Faktor vor:$$\phantom{D\_3}=2\cdot\left|\begin{array}{c}1 & 1 & 0\\0 & 1 & 2\\0 & 0 & 3\end{array}\right|=2\cdot3\cdot\left|\begin{array}{c}1 & 1 & 0\\0 & 1 & 2\\0 & 0 & 1\end{array}\right|=6$$


Bei \(n=4\) wiederhole ich zunächst alle Schritte vom Fall \(n=3\):


$$D\_4=\left|\begin{array}{c}1 & 1 & 0 & 0\\-1 & 1 & 4 & 0\\0 & -1 & 1 & 9\\0 & 0 & -1 & 1\end{array}\right|=\left|\begin{array}{c}1 & 1 & 0 & 0\\0 & 2 & 4 & 0\\0 & -1 & 1 & 9\\0 & 0 & -1 & 1\end{array}\right|=2\cdot\left|\begin{array}{c}1 & 1 & 0 & 0\\0 & 1 & 2 & 0\\0 & -1 & 1 & 9\\0 & 0 & -1 & 1\end{array}\right|$$$$\phantom{D\_4}=2\cdot\left|\begin{array}{c}1 & 1 & 0 & 0\\0 & 1 & 2 & 0\\0 & 0 & 3 & 9\\0 & 0 & -1 & 1\end{array}\right|=2\cdot3\cdot\left|\begin{array}{c}\underline1 & \underline1 & \underline0 & 0\\\underline0 & \underline1 & \underline2 & 0\\\underline0 & \underline0 & \underline1 & 3\\0 & 0 & -1 & 1\end{array}\right|$$Man erkennt die letzte Determinante aus der Berechnung von \(D\_3\) wieder (unterstrichene Einträge), nur sind jetzt noch die 3 Elemente in der rechten unteren Ecke dazu gekommen, alle anderen zusätzlichen Einträge sind 0. Wir können daher noch einen weiteren Schritt (Addition der vorletzten Zeile zur letzten und Faktor herausziehen) durchführen:$$\phantom{D\_4}=2\cdot3\cdot\left|\begin{array}{c}1 & 1 & 0 & 0\\0 & 1 & 2 & 0\\0 & 0 & 1 & 3\\0 & 0 & 0 & 4\end{array}\right|=2\cdot3\cdot4\cdot\left|\begin{array}{c}1 & 1 & 0 & 0\\0 & 1 & 2 & 0\\0 & 0 & 1 & 3\\0 & 0 & 0 & 1\end{array}\right|=24$$


Damit ist klar, dass: \(D\_n=n!\)


Dieses Vorgehen kannst du, wenn verlangt, noch in einen sauberen Induktionsbeweis packen. Die Beweisidee sollte zumindest jetzt klar sein ;) <h2>aufgrund der empfehlungen in den kommentaren habe ich begonnen, <a href="http://tools.tortoisesvn.net/grepwin.html">grepwin</a> zu verwenden, und es ist fantastisch und <em> kostenlos</em>.</h2><hr><p>(ich bin immer noch ein fan von <a href="http://www.powergrep.com/">powergrep</a> , aber ich benutze es nicht mehr.)</p><p>ich weiß, dass sie es bereits erwähnt haben, aber powergrep ist <strong> fantastisch </strong>.</p><p>einige meiner lieblingsfunktionen sind:</p><ul> <li>klicken sie mit der rechten maustaste auf einen ordner, um powergrep darauf auszuführen</li> <li>verwenden sie reguläre ausdrücke oder wörtlichen text</li> <li>geben sie platzhalter für dateien an, die ein- und ausgeschlossen werden sollen</li> <li>suchen &amp; ersetzen</li> <li>der vorschaumodus ist gut, da sie sicherstellen können, dass sie das ersetzen, was sie beabsichtigen.</li> </ul><p>jetzt ist mir klar, dass die anderen grep-tools all das tun können. es ist nur so, dass powergrep alle funktionen in einer sehr benutzerfreundlichen benutzeroberfläche zusammenfasst.</p><p><strong> <em> von den gleichen wundervollen leuten, die sie mitgebracht haben <a href="http://en.wikipedia.org/wiki/regexbuddy">regexbuddy</a> und denen ich nichts mehr zu tun habe, als ihre sachen zu lieben.</em> </strong> (es sollte beachtet werden, dass regexbuddy eine basisversion von grep (für windows) selbst enthält und viel weniger kostet als powergrep.)</p><hr><h2>zusätzliche lösungen</h2><h3>vorhandene windows-befehle</h3><ul> <li> <a href="http://ss64.com/nt/findstr.html"> findstr </a> </li> <li> <a href="https://technet.microsoft.com/en-us/library/hh849903.aspx">auswahlzeichenfolge</a> in powershell</li> </ul><h3>linux-befehlsimplementierungen unter windows</h3><ul> <li> <a href="http://en.wikipedia.org/wiki/cygwin">cygwin</a> </li> <li> <a href="https://github.com/dthree/cash">bargeld</a> </li> </ul><h3>grep-tools mit grafischer oberfläche</h3><ul> <li> <a href="http://astrogrep.sourceforge.net/screenshots/">astrogrep</a> </li> <li> <a href="https://www.baremetalsoft.com/baregrep/">baregrep</a> </li> <li> <a href="http://stefanstools.sourceforge.net/grepwin.html">grepwin</a> </li> </ul><h3>zusätzliche grep-tools</h3><ul> <li> <a href="http://code.google.com/p/dngrep/">dngrep</a> </li> </ul>