Hi Gabriele,
oh my goodness, sonification is a really, really broad field. It depends on what you want to hear based on the data available.
If you have Pyo installed on your computer (it can be a little tricky sometimes), you might want to take a look at the following Python script as a trivial and naive starting point, which only works with Pyo. You can "play around" with all the parameters a lot. If you have wxPython installed, you can also do this live, as Pyo comes with two methods: {var_name}.ctrl() and {var_name}.graph(). Read the documentation, but if you don't know Pyo at all, it takes a little time to understand Pyo, but it's worth it :)
-----------------------
from pyo import *
from pyo.lib._wxwidgets import (tFromValue, interpFloat)
import random
s = Server(duplex=1).boot().start()
# any data as a list of floats
data = [random.uniform(1, 5) for x in range(1000)]
# set the lowest and highest output frequency in Hertz
low_freq = 200
high_freq = 800
# set duration and spacing of a note (frequency) in sec
note_duration = .02
note_spacing = .001
# normalize data into a range of 0...1
norm_data = [tFromValue(a, min(data), max(data)) for a in data]
# transform/interpolate normalized data between low_freq and high_freq
freq_data = [interpFloat(a, low_freq, high_freq) for a in norm_data]
# load a pyo table with these frequencies
tab = DataTable(size=len(freq_data), init=freq_data)
# start a clock generator - how quickly the frequencies are played in succession
m = Metro(note_duration+note_spacing).play()
# create a counter to iterate through the data table
c = Counter(m, min=0, max=len(freq_data), dir=0)
# get the frequency from freq_data according to counter
pit = TableIndex(tab, c)
# create an envelope around each played note (frequency) in sync with the clock generator
env = Expseg([
(0, 0),
(note_duration/8, 1),
(note_duration, 0),
((note_duration+note_spacing), 0)
],
exp=1., loop=True, mul=.1).play()
# play the current note as a sinus wave in succession
a = Sine(freq=pit, mul=env).mix(2).out()
# if you like add a bit reverb - if so, you can remove '.out()' from Sine(...)
d = WGVerb(a, feedback=[.8, .95], cutoff=high_freq*3, bal=.5, mul=1.).out()
# if you have wxPython installed:
s.gui(locals())
# if you haven't install wxPython:
try:
while True:
input('Press ENTER to quit')
break
except Exception:
pass
--------------------
Best, Hans