Package: datawise
DataWiseAI Assistant for Python Data AnalyticsCapabilitiesLimitationsUse SQL to transform Pandas dataframesMay occasionally generate incorrect resultsUse English to visualize Pandas dataframes (beta)Get your API Key🔍 DemoTry out DataWise in your browser:🔧 Quick installInstall DataWise client first:pipinstalldatawiseConfigure with your account's API key.
Either set it asDATAWISE_API_KEYenvironment variable before using the library:exportDATAWISE_API_KEY=sk-...Or setapi_keyto its value:fromdatawiseimportDataWisedw=DataWise(api_key="you_api_key_here")Use SQL to transform Pandas dataframesYou need to installpandasandnumpypackages as pre-requisites for SQL query.pipinstallpandasnumpyTo transform, simply callsqlfunction. You can use SQLite style SQL query to transform Pandas dataframes.fromdatawiseimportDataWiseimportpandasaspdcountries=pd.DataFrame({"country":["United States","United Kingdom","France","Germany","Italy","Spain","Canada","Australia","Japan","China"],"gdp":[19294482071552,2891615567872,2411255037952,3435817336832,1745433788416,1181205135360,1607402389504,1490967855104,4380756541440,14631844184064],"happiness_index":[6.94,7.16,6.66,7.07,6.38,6.4,7.23,7.22,5.87,5.12]})dw=DataWise(api_key="you_api_key_here")df=dw.sql("SELECT COUNT(country) FROM countries",{"countries":countries})print(df)The above code will return the following dataframe:count
0          10You can also do joins of multiple dataframes:fromdatawiseimportDataWiseimportpandasaspdcountries=pd.DataFrame({"country":["United States","United Kingdom","France","Germany","Italy","Spain","Canada","Australia","Japan","China"],"gdp":[19294482071552,2891615567872,2411255037952,3435817336832,1745433788416,1181205135360,1607402389504,1490967855104,4380756541440,14631844184064],"happiness_index":[6.94,7.16,6.66,7.07,6.38,6.4,7.23,7.22,5.87,5.12]})country_populations=pd.DataFrame({"country":["United States","United Kingdom","France","Germany","Italy","Spain","Canada","Australia","Japan","China"],"population":[1,2,3,4,5,6,7,8,9,10],})dw=DataWise(api_key="you_api_key_here")df=dw.sql("SELECT * FROM countries LEFT JOIN country_populations ON countries.country = country_populations.country",{"countries":countries,"country_populations":country_populations})print(df)The above code will return the following dataframe:country             gdp  happiness_index  population
0   United States  19294482071552             6.94           1
1  United Kingdom   2891615567872             7.16           2
2          France   2411255037952             6.66           3
3         Germany   3435817336832             7.07           4
4           Italy   1745433788416             6.38           5
5           Spain   1181205135360             6.40           6
6          Canada   1607402389504             7.23           7
7       Australia   1490967855104             7.22           8
8           Japan   4380756541440             5.87           9
9           China  14631844184064             5.12          10Limitations of using SQL to transform Pandas dataframesMay occasionally generate incorrect resultsOrdering of rows is not strict unless ORDER BY clause is specifiedNo support for Window functions:https://www.sqlite.org/windowfunctions.htmlIf SQL query contains WHERE clause withLIKEoperator, incorrect result might be generatedUse English to visualize Pandas dataframes (beta)You can write English to describe how you want to visualize your dataframe.
This feature is available as beta feature so accurate result is not guaranteed.You need to installmatplotlibandseabornpackages as pre-requisites for SQL query.pipinstallmatplotlibseabornTo visualize, simply callvizfunction.fromdatawiseimportDataWisedw=DataWise(api_key="you_api_key_here")tips=sns.load_dataset("tips")dw.viz("Show me relationship between total bill and tip. Each day should have different colour. Title is: Total Bill vs Tip",{"tips":tips})Printing out translated codeYou can ask DataWise to print translated code to console usingcode=Trueflag.importloggingimportsysroot=logging.getLogger()root.setLevel(logging.INFO)handler=logging.StreamHandler(sys.stdout)handler.setLevel(logging.INFO)root.addHandler(handler)...df=dw.sql("SELECT COUNT(country) FROM countries",{"countries":countries},code=True)Error HandlingErrors could happen if we cannot translate the SQL query. Consider the following example:fromdatawiseimportDataWiseimportpandasaspdcountries=pd.DataFrame({"country":["United States","United Kingdom","France","Germany","Italy","Spain","Canada","Australia","Japan","China"],"gdp":[19294482071552,2891615567872,2411255037952,3435817336832,1745433788416,1181205135360,1607402389504,1490967855104,4380756541440,14631844184064],"happiness_index":[6.94,7.16,6.66,7.07,6.38,6.4,7.23,7.22,5.87,5.12]})dw=DataWise(api_key="you_api_key_here")dw.sql("SELECT bad_column FROM bad_table",{"countries":countries})The above code will give following error message:ERROR    root:__init__.py:47 We couldn't translate your query. Here is python code we attempted to generate: 
return_df = bad_table['bad_column']You can modify the SQL query so that it works based on the code we attempted to generate.
You can also take the translated code and use it after modifying it to work.📜 LicenseDataWise is licensed under the Apache 2.0 License. See the LICENSE file for more details.🤝 AcknowledgementsThis project is leveragespandaslibrary by independent contributors, but it's in no way affiliated with the pandas project.