pandas.dataframeからilocを用いて必要なデータだけを抜き出した際に表示されるワーニングについて教えてください。

投稿者: Anonymous pandasのデータフレーム(df2)から必要な行列だけを抜き出すために、下記のような操作をした際に表示されるワーニングについて。 df2 = df.iloc[0:3201,:] #必要なデータだけ抜き出し df2 = df2.astype(float) #データ型変更:実数 df_index = df2.iloc[:,0] df_alfa = df2.iloc[:,np.arange(1, 27, 3)] A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy ilocではなく、locで”カラム名で指定”を推奨していることなのでしょうか? 計算、グラフ作成は問題なくできているのですが、気になっております。 <質問追記2018/10/16> magichansさんへ プログラムを再度確認してみると、 上記ではなく下記のところで表示されているエラーのようです(すみません)。 次のような計算にすすみ、…(Continue Reading)

pandas DataFrameで特定条件で選択した行から指定のカラムだけ取得したい

投稿者: Anonymous 以下のようなpandas DataFrameがあります。 import pandas as pd import numpy as np df = pd.DataFrame(np.arange(30).reshape(10,3),columns=pd.Index([‘one’,’two’,’three’])) 特定条件で選択した行は以下のように簡単に取得できます。 例えば、twoカラムの10より大きい数の行を取得するには以下のようにしています。 df[df[‘two’]>10] しかし本当に欲しいのはこの条件で取得したDataFrameのthreeカラムだけを取得したいです。 簡単に一行で取得するにはどうすればいいでしょうか? df2 = df[df[‘two’]>10] df3 = df2[‘three’] とすれば取得可能ですが、もっとスマートにしたいです。1行で書けないものでしょうか? ご指導よろしくお願いいたします。 解決 通常はこのように書くことが多いです。 df.loc[df[“two”] > 10, “three”] 回答者: Anonymous

dataframeの各セルのlistを分解して新たな変数にするには?

投稿者: Anonymous 次のような各セルにリストが入ったdataframeがあります。 import pandas as pd df = pd.DataFrame( {‘x’: [[‘都営三田線/水道橋駅 歩4分’, ‘JR中央線/水道橋駅 歩3分’], [‘東京メトロ東西線/飯田橋駅 歩5分’, ‘東京メトロ東西線/九段下駅 歩7分’, ‘JR中央線/水道橋駅 歩8分’], [‘JR山手線/神田駅 歩6分’]]}, index=[1, 2, 3]) このxを分解して、x1, x2, x3のような変数を新たに作成したいのですが、 ご教示頂けないでしょうか? x1, x2, x3 都営三田線/水道橋駅 歩4分, JR中央線/水道橋駅 歩3分, nan 東京メトロ東西線/飯田橋駅 歩5分, 東京メトロ東西線/九段下駅 歩7分, JR中央線/水道橋駅 歩8分 JR山手線/神田駅 歩6分, nan, nan 解決 下記では如何でしょうか。 splitted = df[‘x’].apply(pd.Series) splitted.columns =…(Continue Reading)

Numeros enteros en pandas python “dataframe”

publicado por: Anonymous Importo un documento a jupiter e ingresa normal con numeros enteros, aplico una fórmula para agrupar, sumar y luego restar y el producto salen todos los números con decimales y exponenciales. ¿Cómo obtengo sólo números enteros??? ::::::: adjunto código :::::::::: mydataset_df.head(10) cond1_df = ( mydataset_df .groupby([“move_id/id”], as_index=False) .sum() .assign( balance=lambda row: row.credit…(Continue Reading)

Reemplazar valores NaN (Nulos, Faltantes) en un Data-Frame (de Pandas – Python), por el cuartil 80 de la fila en que se encuentre dicho valor NaN

publicado por: Anonymous El archivo CSV, se encuentra en este link: Archivo Esta es una captura de las primeras 11 filas, con las correspondientes columnas: Hasta ahora he intentado con los siguientes codigos: df.fillna(df.filter(like=’20’).quantile(.8, axis = 1), axis=0, inplace=True) y con: q80_dicc = df.filter(like=’20’).quantile(.8, axis = 1).to_dict() df = df.replace(np.nan, q80_dicc.values()) solución La solución con…(Continue Reading)

Agrupación y filtro por percentil con pandas Python

publicado por: Anonymous Me gustaría agrupar un conjunto de datos por rangos de coordenadas (histograma) y filtrar aquellos valores que queden por encimar del percentil p = 0.97 (datos fuera de las zonas marcadas en verde) import numpy as np import pandas as pd import matplotlib.pyplot as plt mu, sigma = 0, 0.2 x =…(Continue Reading)

¿Como leer un archivo CSV en Python y extraer el maximo y el minimo valor por minuto?

publicado por: Anonymous He utilizado este código para extraer los datos de un archivo CSV, filtrarlos y hasta organizarlos por minuto, pero me gustaría su ayuda para crear un ciclo que me permita actualizar la información por minuto, determinando el máximo y el mínimo valor. import pandas as pd import datetime datos = pd.read_csv(‘C:/Users/TECNOLOGIA/datos.csv’, names=[‘LocalTime’,…(Continue Reading)

Restar fechas con formato datetime64[ns] de un dataframe en python 3 con Pandas

publicado por: Anonymous Tengo dos columnas con fechas en formato datetime64[ns] en un dataframe de Pandas y me gustaría poder restar las dos fechas. Necesito restar la columna 1 con la columna 2 para obtener una edad. El problema lo resolví de la siguiente manera df[‘dias’] = (df[‘1’] – df[‘2’]).dt.days ### devuelve una serie con…(Continue Reading)

Python-pandasの階層型インデックスにおいて、親子関係を保ったまま親をシャッフルすることはできるのでしょうか。

投稿者: Anonymous – 環境 Mac Python 3.7.3 Jupyter Notebook 5.7.8 – やりたいこと 親ID列・子ID列を持ったデータフレームがあります。 このとき、全行を単純にランダムソートするのではなく、同じ親IDを持つ行をグループ化した上で、そのグループをランダムソートできるでしょうか。 – やったこと 一部の抽出対象のparent-idが格納された配列を用意。 isinメソッドでマッチしたデータを出力しようとしましたが、parent-idをひとかたまりにランダム出力されるのではなく、単純なランダムソートで出力されてしまいます。 Python Code lis = [2, 3, 1] #parent-idが1~3までのものが出力対象 test_df = pd.DataFrame({“parent-id”: [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4], “child-id”: [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]}) f…(Continue Reading)

特定の条件を満たす行のみを削除するには?

投稿者: Anonymous 特定の条件を満たす行のみを選択して、データセット全体から削除したいと考えています。 pandasのdataframeにdfというデータがあります。 この中から、「同意しません」とある行全体をデータから削除したいと考えています。 現在のところ、 不同意のサンプルをselection1というグループにして、 dfから、該当する行全体、データから削除しようとしているのですが、この部分がうまく行きません。 もし条件の指定と、その条件に見合うデータのみを削除する方法を ご存じでしたら、ご教示頂けますとありがたいです。 よろしくお願いします。 import pandas as pd import numpy as np df = pd.DataFrame( {‘x’: [‘同意します’, ‘同意しません’, ‘同意します’, ‘同意しません’,]}, index=[1, 2, 3, 4, ]) consent_dic = {“同意します”:1, “同意しません”:0} df[“consent”] = df.apply(lambda row: consent_dic[row[“x”]], axis=1) #不同意のサンプルを選択 selection1 = df.consent==0 #不同意のサンプルを削除 ? df.drop(df.consent.selection1) 解決 次のコマンドで、実行できました。 import pandas as pd…(Continue Reading)

pandasデータへ変換する方法を教えて下さい。

投稿者: Anonymous pythonのループの仕方を教えて下さい。 よろしくお願いします。 (参考)無向グラフと有向グラフ>無向グラフの隣接行列(adjacency matrix) http://www.dais.is.tohoku.ac.jp/~shioura/teaching/ad11/ad11-09.pdf#page=5 import pandas as pd # input : 線分a [0,1] # 線分b [0,2] # 線分c [0,3] # 線分d [1,2] # 線分e [2,3] # 線分f [3,4] # スクリプト??? # output df = pd.DataFrame( [[0,1,1,1,0], [1,0,1,0,0], [1,1,0,1,0], [1,0,1,0,1], [0,0,0,1,0]], index =[“0″,”1″,”2″,”3″,”4”], columns=[“0″,”1″,”2″,”3″,”4”]) print(df) # 0 1 2 3 4 # 0…(Continue Reading)

python pandas でのデータ処理について

投稿者: Anonymous こんにちは。python pandas 超初学者の文系の者です。色々と調べてはみたのですが、どうすれば良いか分からずに困り果てています。お力添えをお願いいたします。 あるエクセルデータを読み込み、以下のようなグラフの作成をしているのですが、x軸は範囲を限定し、さらに、y軸はデータが0から始まるように移動させたいのです。具体的に言うと、x軸は0.05から0,25まで、y軸は0から始まり、データも0から始まるようにしたいのです。 このグラフを描画するところまではなんとかたどり着きましたが、ここからどうしていいかさっぱりわかりません。 元のエクセルデータ自体をいじらないと不可能でしょうか? ソースコードを以下に載せておきます。 import xlrd import pandas as pd import matplotlib import matplotlib.pyplot as plt import numpy as np from pylab import * line_min=4 line_max=384 data=xlrd.open_workbook(‘702_1.xls’) Sheet2=data.sheet_by_index(1) print Sheet2.ncols print data.sheet_names() strain=Sheet2.col_values(1,start_rowx=line_min,end_rowx=line_max) force=Sheet2.col_values(14,start_rowx=line_min,end_rowx=line_max) figure() plot(strain,force,’b’) show() 解決 これでどうですか(force= 以下を書き換え) force = np.array(Sheet2.col_values(14, start_rowx=line_min, end_rowx=line_max)) force -= np.min(force) fig, ax…(Continue Reading)

Añadir nueva columna con valor dependiente en un dataframe en Python

publicado por: Anonymous Hola soy nueva en Python y estoy intentando hace lo siguiente: Teniendo un dataframe con valores de notas (TheValue) y con fechas (Date), prentendo ordenar el DataFrame por fecha y luego añadir una columna extra en la que ponga por escrito si es suspendido (nota menor que 5), aprobado (mayor o igual…(Continue Reading)

Error pandas y matplotlib could not convert string to float

publicado por: Anonymous Estoy tratando de dibujar en un gráfica los precios de celular según sus modelos Por ahora tengo esto import pandas as pd import csv import matplotlib.pyplot as plt import matplotlib.dates as mdates df1 = pd.read_csv(‘MercadoLibreMejor_items.csv’) print(df1) x = df1[‘Modelo’] y = df1[‘Precio’] #plot plt.plot(x,y) plt.show() La lectura del csv es correcta pero…(Continue Reading)

Reemplazar valores celda por celdas dentro de un for en pandas

publicado por: Anonymous Necesito solucionar un error que aparece al reemplazar valores celdas por celdas dentro de un ciclo en pandas: Usando la siguiente información: Info reducida para el ejemplo import pandas as pd data = pd.read_csv(‘iEC7R76C.txt’, sep=”,”) data.head(2) Quiero completar el año en base al titulo y lo obtengo de esta forma: import re…(Continue Reading)

Como contar elementos de una serie sobre criterios de otra serie

publicado por: Anonymous Necesito contar todos los atletas de este archivo CSV que hayan participado tanto en juegos de verano como de invierno. el archivo viene de la siguiente manera: Name / Season xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx ……….. ……….. El problema es que me arroja un loop infinito. En mi código intento mantener…(Continue Reading)

リストを作るときに、必要な要素数になるまで回したい

投稿者: Anonymous データセットを作成したい。そこで以下のコードに改良を加えたい。 コードで計算されているDisが、1<Dis<2の間に収まるようにしたい。 つまり、それ以外の値を取るDisの行の組み合わせは捨てたいです。 しかし、最終的に得られるP_sample_2のデータは10×6の行列になるようにしたい。 どのように考えるのがよいでしょうか? P_sample = [] PP_sample = [] Dis_sample = [] for _ in range(10): # P_sample_allからランダムに行を取り出すための乱数を作成 PP = np.random.choice(P_sample_all.shape[0], 2, replace=False) PP_sample.append(PP) # 取り出した原子位置間の距離を計算 Dis=np.sqrt((P_sample_all[PP[0],0]-P_sample_all[PP[1],0])**2+ (P_sample_all[PP[0],1]-P_sample_all[PP[1],1])**2+ (P_sample_all[PP[0],2]-P_sample_all[PP[1],2])**2) Dis_sample.append(Dis) # 取り出した行を1つの行として扱うために変形 P_sample_1 = P_sample_all[PP, :] P_sample.append(P_sample_1) P_sample_2 = np.reshape(P_sample, (10, 6)) PP_sample, Dis_sample, P_sample_2 解決 # 取り出した原子位置間の距離を計算 Dis=np.sqrt((P_sample_all[PP[0],0]-P_sample_all[PP[1],0])**2+ (P_sample_all[PP[0],1]-P_sample_all[PP[1],1])**2+ (P_sample_all[PP[0],2]-P_sample_all[PP[1],2])**2)…(Continue Reading)

k-means/matplotlib を使って、エネルギー消費量をクラスタリング。

投稿者: Anonymous matplotlibとk-meansを使用して、csvファイルをクラスタリングしようとしています。 私の扱っているcsvデータはエネルギー消費量に関するもので、以下のリンクのものとなります。 https://github.com/camenergydatalab/EnergyDataSimulationChallenge/blob/master/challenge2/data/total_watt.csv 一日ごとのエネルギー消費量を、低・中・高の三段階にクラスタリングしたいと考えています。 以下、コードとなります。 import numpy as np import matplotlib.pyplot as plt from matplotlib import style style.use(‘ggplot’) import pandas as pd from sklearn.cluster import KMeans MY_FILE=’total_watt.csv’ date = [] consumption = [] df = pd.read_csv(MY_FILE, parse_dates=[0], index_col=[0]) df = df.resample(‘1D’, how=’sum’) for row in df: if len(row) ==2 : date.append(row[0]) consumption.append(row[1]) import…(Continue Reading)

¿Cómo puedo saber cuáles son las filas duplicadas con Pandas?

publicado por: Anonymous Estoy trabajando con Pandas y la función duplicated() para detectar filas que son iguales. import pandas as pd d = { 1: {‘nombre’: ‘n1’, 1: 10, 2: 20, 3: 30}, 2: {‘nombre’: ‘n2’, 1: 10, 2: 20, 3: 30}, 3: {‘nombre’: ‘n3’, 1: 11, 2: 21, 3: 30}, 4: {‘nombre’: ‘n4’, 1:…(Continue Reading)

anacondaでpandasを使うモジュールをpyinstallerでexe化出来ない

投稿者: Anonymous pandasを使ったモジュールをexe化しようとしても上手く行かずに困っています。 Traceback (most recent call last): File “site-packagesPyInstallerloaderrthookspyi_rth_pkgres.py”, line 11, in <module> File “c:usersUsernameanaconda3libsite-packagesPyInstallerloaderpyimod03_importers.py”, line 389, in load_module exec(bytecode, module.__dict__) File “site-packagessetuptools-27.2.0-py3.5.eggpkg_resources__init__.py”, line 68, in <module> File “site-packagessetuptools-27.2.0-py3.5.eggpkg_resourcesextern__init__.py”, line 61, in load_module ImportError: The ‘appdirs’ package is required; normally this is bundled with this package so if you get this warning, consult the…(Continue Reading)

Crear fichero de datos csv e ir añadiendo información – Pandas

publicado por: Anonymous Mi objetivo es analizar una serie de imágenes e ir sacando información y guardándola en fichero de extensión csv. Para ello lo primero que quiero hacer es crear el fichero vacío, simplemente con sus columnas y luego a medida que vaya obteniendo datos ir rellenándolo. Para crear el csv lo hago con…(Continue Reading)

¿Como agrupar datos de un DataFrame por varias columnas a la vez?

publicado por: Anonymous Estoy realizando un análisis de tiempos muertos de una línea de producción. Tengo un DataFrame en formato CSV con las siguientes columnas: ‘index’, ‘id_planta’, ‘fecha’, ‘linea’, ‘turno’, ‘Supervisor’, ‘CategoriaTM’, ‘CausaTM’, ‘duracionTM’ Solo la columna duracionTM tiene un valor numérico. Utilizando pandas y quiero agrupar los datos por CausaTM. Una manera de hacerlo…(Continue Reading)

Ciclo para promedio con pandas

publicado por: Anonymous Buenas tengo el siguiente df, la cuestión es que necesito filtrar las velocidades por hora y con estas sacar un promedio, estoy utlizando el siguiente código: import pandas as pd import numpy as np df = pd.read_csv(‘df.csv’) b = df[(df[‘Fecha’] >= ‘2010-04-01’) & (df[‘Fecha’] <= ‘2010-04-30’) & (df[‘Hora’] == ’22:00:00′)] c =…(Continue Reading)

Pandasでのデータ処理を高速化したい

投稿者: Anonymous PandasのDataframeで、特定条件の数値を統一したいです。 例えばこのようなdfがあります。 id label 0 a 1 1 a 2 2 a 1 3 b 2 4 b 2 5 c 2 6 a 1 7 b 1 8 b 2 aとbは複数のラベルを持っているため、数の多いラベルをidのラベルにしたいです。 つまり、aのラベルを全て1に、bのラベルを全て2に統一したいです。 この作業に対して2つの案を考えました。 1.value_countsで集計してwhere, applyで置き換える def change_label(old_l,new_l): return new_l ids = new_df[‘id’].unique() for i in trange(len(ids)): new_label = list(new_df[new_df[‘id’]==ids[i]][‘label’].value_counts().items())[0][0] new_df[‘label’].where(new_df[‘id’] != ids[i],…(Continue Reading)

Cambiar formato fecha ymd_hms a ymd

publicado por: Anonymous Tengo un dataframeen Pythoncon dos columnas: StartTime y StopTime. En una de las operaciones, necesito agrupar por día los datos (StartTime). Para ello necesito eliminar de esa columna las horas, minutos, segundos… Los datos que actualmente tiene son de esta forma: StartTime 2019-09-01 20:47:50 2019-09-01 22:47:50 2019-09-02 20:47:50 Y quiero que queden:…(Continue Reading)

Como pintar una gráfica con matplolib a partir de un dataframe de Pandas

publicado por: Anonymous Ante todo he de decir que no tengo muchos conocimientos de programación porque llevo sólo 1 mes con ello. Tengo un dataframe obtenido a partir de un excel *xls en el que un campo “Barrio” refleja los barrios de Madrid y además tengo datos de densidades de población por año para cada…(Continue Reading)

dataframeに含まれる、文字列中の数字を取り出したい

投稿者: Anonymous dfにおけるxには、目的地までの来るまでの移動時間、または徒歩分数が混在しています。 index 2には、徒歩分数が入っています。 車での移動時間が入っている箇所では、「車x(ykm)」という形式になっています。 車の時間のみを取り出し、次のような列に「car_time」という変数名を付けて、dfに追加したいです。 [‘5′,’0′,’27’] 現在は以下のような状況です。 import pandas as pd import numpy as np import re df = pd.DataFrame( {‘x’: [‘車5(0.8km)’, ‘5’, ‘車27(8.6km)’]}, index=[1, 2, 3]) df[‘car_time’] = df.apply(lambda i: re.split(r'[^0-9]’, i.x), axis=1) print(df) # x car_time # 1 車5(0.8km) [, 5, 0, 8, , , ] # 2 5 [5] #…(Continue Reading)

pandasで連番のcsvを読み込むのを関数化する

投稿者: Anonymous pandasでcsvをまとめて取り込みたい data=[0]*100 while(i<100): data[i] = pd.read_csv(‘1 o_%03d.csv’%i) i+=1 を参考に、 def mkdf(): data=[0]*25 while(i<25): data[i] = pd.read_csv(‘1 o_%03d.csv’%i) i+=1 としたところ、上のように関数を使わずにベタで書くとprint(data[3])のようにすれば表示できますが、mkdf()を実行したあとprintしても表示されません。 どのようにしたらベタで書いたものと同様の結果が得られるでしょうか? returnとかglobalとか試しましたがどうにもうまくいかないです。 どうぞよろしくお願いいたします。 解決 dataをmkdf()の外(グローバル)に出して、mkdf()の中でglobal宣言することと、 iをwhile()の前に 0 で初期化するのが良いのではないでしょうか。 data=[0]*25 def mkdf(): global data i=0 while(i<25): data[i] = pd.read_csv(‘1 o_%03d.csv’%i) i+=1 回答者: Anonymous