1

I have written a python code that generates output in the following format:

m=10 n=15 p=0.3 T=0.45

m=10 n=25 p=0.5 T=0.5

m=15 n=15 p=0.3 T=0.65

m=15 n=25 p=0.5 T=0.66

m=20 n=15 p=0.3 T=0.15

.......

I have around 1000 such rows. I want to get the output in a table format so that I can directly copy this into rows and columns of an excel file. Kindly help.

3
  • 4
    How about just outputting to a CSV or even an XLSX file and opening the file in excel directly? Commented Jun 12, 2022 at 12:16
  • adding to above comment, you might also look at openpyxl Commented Jun 12, 2022 at 12:20
  • @SashSinha, that's not a bad solution, because then you can use a tool that renders such data to the terminal as a table, meaning less reinvention of the wheel. Commented Jul 24, 2024 at 16:12

5 Answers 5

1

The best way to approach this situation in my opinion is to use dataframes. These dataframes can help you make a table with column names and etc. Pandas can help with you that which is one of the most convenient libraries to use. Here is a quick pseudocode I hope it helps.

import pandas as pd 
list=[]
list.append(["Your desired result"])
df=pd.Dataframe(list)
pd.to_excel(df)
Sign up to request clarification or add additional context in comments.

Comments

1

I think as @Batselot told, the best way to do that would be with DataFrames. You can do one of the two following procedures:

1 - concatenate all the output values of your function in a single string, and then to the following code, which will treat the string, removing the '\n' and ' ':

values = """m=10 n=15 p=0.3 T=0.45

m=10 n=25 p=0.5 T=0.5

m=15 n=15 p=0.3 T=0.65

m=15 n=25 p=0.5 T=0.66

m=20 n=15 p=0.3 T=0.15"""

str_result = values.split('\n')
while '' in str_result:
    str_result.remove('')
data = []
for row in str_result:
    data.append(row.split(' '))
df = pd.DataFrame(data, columns=['m', 'n', 'p', 'T'])
#If my excel file were called 'excel_file.xlsx' and it is in the same folder of my python code and it had a sheet called 'Sheet1'.
df.to_excel(r"excel_file.xlsx", sheet_name='Sheet1', index=False)

2 - You can just append the values straight in a list inside your loop, and you wont have to treat it with string manipulation.

data = []
#You Probably have a for loop like this:
for i in 'some list':
    print("m={}".format(m), "m={}".format(n), "m={}".format(p), "m={}".format(T))
    data.append(["m={}".format(m), "n={}".format(n), "p={}".format(p), "T={}".format(T)])

df = pd.DataFrame(data, columns=['m', 'n', 'p', 'T'])
print(df)
#If my excel file were called 'excel_file.xlsx' and it is in the same folder of my python code and it had a sheet called 'Sheet1'.
df.to_excel(r"excel_file.xlsx", sheet_name='Sheet1', index=False)

Note 1: your excell sheet must be closed if not you will receive a permission error.

Note 2: you’ll have to install openpyxl if you get the following error:

ModuleNotFoundError: No module named ‘openpyxl’

You may then use PIP to install openpyxl as follows:

pip install openpyxl

Comments

0

The easiest is to initialize a list upfront and append each data point to that list:

result = []

for i in range(1, 10):
    # ... do your calculations
    result.append([i, i*i, i*i*i, 1/i, 1/i/i])

Edit:

What I also sometimes did in the past is to write out the table in html-table format:

<table>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>4</td><td>5</td><td>6</td></tr>
</table>

Normally, writing to an Excel file directly (see the answer from Batselot) can be the better solution. The html-trick allows you to paste the data into an open Excel file where you like to have it.

Comments

0

I wrote a simple script in python, that should do your job.

import sys

print("m,n,p,T")
# read till EOF os stdin
for line in sys.stdin:
    splits = line.rstrip().split(" ")
    if len(splits) != 4:
        continue
    vals = [(lambda x: x.split("=")[1])(x) for x in splits]
    if len(vals) != 4:
        continue
    print(f'{vals[0]},{vals[1]},{vals[2]},{vals[3]}')

It will format the output of your program in csv format which you can load in excel or a spreadsheet.

To do this,

  1. store this script in something like script.py
  2. run this in shell
$ python <your program>.py | python script.py > output.csv
  1. The result will be stored in output.csv which looks like
m,n,p,T
10,25,0.5,0.5
15,15,0.3,0.65
15,25,0.5,0.66
20,15,0.3,0.15

This csv can be loaded into excel.

Comments

0
import pandas as pd

# Create a DataFrame from the provided data
data = {
    "Household_Size": [5, 4, 4, 4, 5, 6, 6, 4, 5, 5, 3, 3, 4, 4, 4, 5, 4, 5, 5, 5, 4, 4, 5, 3, 1, 1, 2, 2, 1, 1, 3, 2, 2, 3, 3, 2, 3, 5, 5, 4, 5, 4, 4, 4, 4, 4, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 7, 7, 2, 2, 3, 4, 1, 1, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 6, 6, 4, 5, 6, 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
    "Level_of_Education": [14, 14, 17, 16, 16, 17, 15, 17, 15, 13, 15, 15, 12, 17, 15, 15, 15, 17, 17, 15, 12, 10, 12, 14, 15, 13, 13, 13, 15, 13, 13, 13, 15, 15, 15, 12, 15, 15, 10, 12, 13, 15, 15, 12, 15, 15, 15, 15, 15, 15, 15, 12, 12, 14, 15, 15, 12, 17, 17, 16, 14, 15, 13, 15, 17, 16, 14, 15, 13, 15, 15, 14, 13, 15, 15, 17, 12, 14, 15, 12, 12, 14, 15, 15, 13, 15, 17, 17, 10, 12, 14, 14, 15, 13, 13, 14, 15, 15, 15],
}

df = pd.DataFrame(data)

# Define income groups based on quartiles of household size
q1 = df['Household_Size'].quantile(0.25)
q3 = df['Household_Size'].quantile(0.75)

def categorize_income_group(size):
    if size <= q1:
        return "Low Income"
    elif size <= q3:
        return "Middle Income"
    else:
        return "High Income"

# Categorize household size into income groups
df['Income_Group'] = df['Household_Size'].apply(categorize_income_group)

# Create a contingency table
contingency_table = pd.crosstab(df['Level_of_Education'], df['Income_Group'])

print("Contingency Table:")
print(contingency_table)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.