Python Forum

Full Version: unable to automate table creation with crosstab
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
So i'm able to automate parts of the code, but for the actual table creation with "crosstab" i can't quite figure it out. Please help me automate the creation of "tab001", "tab002", etc part of this code...

import numpy as np
import pandas as pd
import pyreadstat

data, meta = pyreadstat.read_sav('/home/larry/Downloads/4607.sav')
meta_dict = dict(zip(meta.column_names, meta.column_labels))

my_list = []
for y in meta.column_names:
    my_list.append(y)

tab001 = pd.crosstab(data[my_list[13]].\
    map(meta.variable_value_labels[my_list[13]]), \
    data['qdp2'].map(meta.variable_value_labels['qdp2']), \
    dropna=True, margins=True). \
    loc[meta.variable_value_labels[my_list[13]].values()]. \
    loc[:,meta.variable_value_labels['qdp2'].values()].round(4)

tab002 = pd.crosstab(data[my_list[14]].\
    map(meta.variable_value_labels[my_list[14]]), \
    data['qdp2'].map(meta.variable_value_labels['qdp2']), \
    dropna=True, margins=True). \
    loc[meta.variable_value_labels[my_list[14]].values()]. \
    loc[:,meta.variable_value_labels['qdp2'].values()].round(4)

tab003 = pd.crosstab(data[my_list[15]].\
    map(meta.variable_value_labels[my_list[15]]), \
    data['qdp2'].map(meta.variable_value_labels['qdp2']), \
    dropna=True, margins=True). \
    loc[meta.variable_value_labels[my_list[15]].values()]. \
    loc[:,meta.variable_value_labels['qdp2'].values()].round(4)

tab004 = pd.crosstab(data[my_list[16]].\
    map(meta.variable_value_labels[my_list[16]]), \
    data['qdp2'].map(meta.variable_value_labels['qdp2']), \
    dropna=True, margins=True). \
    loc[meta.variable_value_labels[my_list[16]].values()]. \
    loc[:,meta.variable_value_labels['qdp2'].values()].round(4)

tab005 = pd.crosstab(data[my_list[17]].\
    map(meta.variable_value_labels[my_list[17]]), \
    data['qdp2'].map(meta.variable_value_labels['qdp2']), \
    dropna=True, margins=True). \
    loc[meta.variable_value_labels[my_list[17]].values()]. \
    loc[:,meta.variable_value_labels['qdp2'].values()].round(4)

tables = [tab001, tab002, tab003, tab004, tab005]

with open('/home/larry/Downloads/tabfreq.txt','w') as outfile:
    for x in tables:
        x.to_string(outfile)
        outfile.write("\n\n")
        outfile.write("###############################################################################\n")
        outfile.write("###############################################################################")
        outfile.write("\n\n")