es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función de tabla cruzada de Panda que obtiene el número para las condiciones.

No estoy seguro si el título fue bien elegido, disculpen por eso. Si esto ya fue cubierto, por favor, háganmelo saber donde no pude encontrarlo.
Para un análisis que estoy realizando, estoy trabajando en JupyterLab, principalmente con scanpy. Quiero ver el número de células que están coexpresando ciertos genes en un agrupamiento de Leiden. Hasta ahora, estaba intentando con la función crosstab de pandas y obtengo el número para cada agrupamiento.
Sin embargo, tengo dos condiciones y ahí estoy luchando por separar las muestras para obtener los conteos de células por separado.

El código que estoy usando para obtener el número total de células, que funciona bien.

pd.crosstab(adata_proc.obs['leiden_r05'], adata_proc.obs['CoEx'])

El código donde estoy luchando por obtener los números para las muestras. Sé que aggfunc = ','.join no es la forma correcta, pero esto es para explicar cuál es el problema.

pd.crosstab(adata_proc.obs['leiden_r05'], adata_proc.obs['CoEx'], adata_proc.obs['sample'], aggfunc = ','.join)

Puedo obtener el nombre de las condiciones en la tabla, pero no quiero esto. Quiero los números para las 2 condiciones. ¿Cómo es esto posible? Tal vez haya una forma de hacer esto en una función separada?

Imagen

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener los recuentos de celdas por separado para las dos condiciones, puedes aplicar un filtro a tus datos utilizando la indexación booleana en pandas.

    Por ejemplo, asumiendo que tus dos condiciones se llaman ‘Condición1’ y ‘Condición2’, puedes crear dos dataframes separados utilizando el siguiente código:

    # Crear máscaras booleanas para las dos condiciones
    condition1_mask = adata_proc.obs['sample'] == 'Condición1'
    condition2_mask = adata_proc.obs['sample'] == 'Condición2'
    
    # Aplicar las máscaras para crear dos dataframes separados
    condition1_df = adata_proc.obs.loc[condition1_mask]
    condition2_df = adata_proc.obs.loc[condition2_mask]
    

    Luego, puedes utilizar estos dataframes para calcular el número de células que coexpresan tus genes por separado para cada condición:

    # Tabla cruzada para la condición 1
    condition1_ct = pd.crosstab(condition1_df['leiden_r05'], condition1_df['CoEx'])
    
    # Tabla cruzada para la condición 2
    condition2_ct = pd.crosstab(condition2_df['leiden_r05'], condition2_df['CoEx'])
    

    Esto te dará los recuentos para cada condición por separado.

Comments are closed.